mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-15 00:03:28 +01:00
Merge pull request #153 from robertknight/safari-dom-fixes
Fix Wombat in Safari 9
This commit is contained in:
commit
cd2390333a
@ -363,26 +363,31 @@ var wombat_internal = function($wbwindow) {
|
||||
}
|
||||
|
||||
//============================================
|
||||
// Define custom property
|
||||
// Override a DOM property
|
||||
function def_prop(obj, prop, set_func, get_func) {
|
||||
// if the property is marked as non-configurable in the current
|
||||
// browser, skip the override
|
||||
var existingDescriptor = Object.getOwnPropertyDescriptor(obj, prop);
|
||||
if (existingDescriptor && !existingDescriptor.configurable) {
|
||||
return;
|
||||
}
|
||||
|
||||
// if no getter function was supplied, skip the override.
|
||||
// See https://github.com/ikreymer/pywb/issues/147 for context
|
||||
if (!get_func) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
Object.defineProperty(obj, prop, {
|
||||
configurable: false,
|
||||
// enumerable: true,
|
||||
set: set_func,
|
||||
get: get_func
|
||||
});
|
||||
|
||||
return true;
|
||||
} catch (e) {
|
||||
var info = "Can't redefine prop " + prop;
|
||||
console.warn(info);
|
||||
//f (obj && obj.tagName) {
|
||||
// info += " on " + obj.tagName;
|
||||
//}
|
||||
//if (value != obj[prop]) {
|
||||
// obj[prop] = value;
|
||||
//}
|
||||
console.warn('Failed to redefine property %s', prop, e.message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -757,15 +762,16 @@ var wombat_internal = function($wbwindow) {
|
||||
def_prop($wbwindow.HTMLBaseElement.prototype, "href", undefined, base_href_get);
|
||||
|
||||
// Shared baseURI
|
||||
var orig_getter = $wbwindow.document.__lookupGetter__("baseURI");
|
||||
var orig_getter = get_orig_getter($wbwindow.Node, "baseURI");
|
||||
if (orig_getter) {
|
||||
var get_baseURI = function() {
|
||||
var res = orig_getter.call(this);
|
||||
return extract_orig(res);
|
||||
}
|
||||
|
||||
var get_baseURI = function() {
|
||||
var res = orig_getter.call(this);
|
||||
return extract_orig(res);
|
||||
def_prop($wbwindow.HTMLElement.prototype, "baseURI", undefined, get_baseURI);
|
||||
def_prop($wbwindow.HTMLDocument.prototype, "baseURI", undefined, get_baseURI);
|
||||
}
|
||||
|
||||
def_prop($wbwindow.HTMLElement.prototype, "baseURI", undefined, get_baseURI);
|
||||
def_prop($wbwindow.HTMLDocument.prototype, "baseURI", undefined, get_baseURI);
|
||||
}
|
||||
|
||||
//============================================
|
||||
|
Loading…
x
Reference in New Issue
Block a user