mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-15 08:04:49 +01:00
client side fixes for proxy obj:
- add general override_func_first_arg_proxy_to_obj() to dereference proxy->obj for first arg - used for MutationObserver.observe() and Node.compareDocumentPosition() for now
This commit is contained in:
parent
2115817792
commit
bbe3cebd2f
@ -2138,15 +2138,15 @@ var _WBWombat = function($wbwindow, wbinfo) {
|
||||
}
|
||||
|
||||
//============================================
|
||||
function init_mo_from_proxy() {
|
||||
var orig_observe = $wbwindow.MutationObserver.prototype.observe;
|
||||
function override_func_first_arg_proxy_to_obj(prototype, method) {
|
||||
var orig = prototype[method];
|
||||
|
||||
function observe_deproxy(target, options) {
|
||||
target = proxy_to_obj(target);
|
||||
return orig_observe.call(this, target, options);
|
||||
function deproxy() {
|
||||
arguments[0] = proxy_to_obj(arguments[0]);
|
||||
orig.apply(this, arguments);
|
||||
}
|
||||
|
||||
$wbwindow.MutationObserver.prototype.observe = observe_deproxy;
|
||||
prototype[method] = deproxy;
|
||||
}
|
||||
|
||||
//============================================
|
||||
@ -2817,6 +2817,10 @@ var _WBWombat = function($wbwindow, wbinfo) {
|
||||
override_iframe_content_access("contentWindow");
|
||||
override_iframe_content_access("contentDocument");
|
||||
|
||||
// override funcs to convert first arg proxy->obj
|
||||
override_func_first_arg_proxy_to_obj($wbwindow.MutationObserver.prototype, "observe");
|
||||
override_func_first_arg_proxy_to_obj($wbwindow.Node.prototype, "compareDocumentPosition");
|
||||
|
||||
override_frames_access($wbwindow);
|
||||
|
||||
// setAttribute
|
||||
@ -2880,8 +2884,6 @@ var _WBWombat = function($wbwindow, wbinfo) {
|
||||
init_window_obj_proxy($wbwindow);
|
||||
init_document_obj_proxy($wbwindow.document);
|
||||
|
||||
init_mo_from_proxy();
|
||||
|
||||
// expose functions
|
||||
var obj = {}
|
||||
obj.extract_orig = extract_orig;
|
||||
|
Loading…
x
Reference in New Issue
Block a user