mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-24 06:59:52 +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() {
|
function override_func_first_arg_proxy_to_obj(prototype, method) {
|
||||||
var orig_observe = $wbwindow.MutationObserver.prototype.observe;
|
var orig = prototype[method];
|
||||||
|
|
||||||
function observe_deproxy(target, options) {
|
function deproxy() {
|
||||||
target = proxy_to_obj(target);
|
arguments[0] = proxy_to_obj(arguments[0]);
|
||||||
return orig_observe.call(this, target, options);
|
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("contentWindow");
|
||||||
override_iframe_content_access("contentDocument");
|
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);
|
override_frames_access($wbwindow);
|
||||||
|
|
||||||
// setAttribute
|
// setAttribute
|
||||||
@ -2880,8 +2884,6 @@ var _WBWombat = function($wbwindow, wbinfo) {
|
|||||||
init_window_obj_proxy($wbwindow);
|
init_window_obj_proxy($wbwindow);
|
||||||
init_document_obj_proxy($wbwindow.document);
|
init_document_obj_proxy($wbwindow.document);
|
||||||
|
|
||||||
init_mo_from_proxy();
|
|
||||||
|
|
||||||
// expose functions
|
// expose functions
|
||||||
var obj = {}
|
var obj = {}
|
||||||
obj.extract_orig = extract_orig;
|
obj.extract_orig = extract_orig;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user