mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-24 06:59:52 +01:00
wombat postMessage improvements: (#338)
- renamed obj to this_obj to reflect that we using the deproxied this - use this_obj rather than window in the first if block that populates the from variable in order to match the logic in pm_origin and because proxy_to_obj returns raw this if not proxy
This commit is contained in:
parent
bb1dbc0080
commit
bd329aaa76
@ -2262,29 +2262,30 @@ var _WBWombat = function($wbwindow, wbinfo) {
|
|||||||
|
|
||||||
$wbwindow.__orig_postMessage = orig;
|
$wbwindow.__orig_postMessage = orig;
|
||||||
|
|
||||||
|
// use this_obj.__WB_source not window to fix google calendar embeds, pm_origin sets this.__WB_source
|
||||||
var postmessage_rewritten = function(message, targetOrigin, transfer, from_top) {
|
var postmessage_rewritten = function(message, targetOrigin, transfer, from_top) {
|
||||||
var from = undefined;
|
var from = undefined;
|
||||||
var src_id = undefined;
|
var src_id = undefined;
|
||||||
var obj = proxy_to_obj(this);
|
var this_obj = proxy_to_obj(this);
|
||||||
|
|
||||||
if (window.__WB_source && window.__WB_source.WB_wombat_location) {
|
if (this_obj.__WB_source && this_obj.__WB_source.WB_wombat_location) {
|
||||||
var source = window.__WB_source;
|
var source = this_obj.__WB_source;
|
||||||
|
|
||||||
from = source.WB_wombat_location.origin;
|
from = source.WB_wombat_location.origin;
|
||||||
|
|
||||||
if (!this.__WB_win_id) {
|
if (!this_obj.__WB_win_id) {
|
||||||
this.__WB_win_id = {};
|
this_obj.__WB_win_id = {};
|
||||||
this.__WB_counter = 0;
|
this_obj.__WB_counter = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!source.__WB_id) {
|
if (!source.__WB_id) {
|
||||||
source.__WB_id = (this.__WB_counter++) + source.WB_wombat_location.href;
|
source.__WB_id = (this_obj.__WB_counter++) + source.WB_wombat_location.href;
|
||||||
}
|
}
|
||||||
this.__WB_win_id[source.__WB_id] = source;
|
this_obj.__WB_win_id[source.__WB_id] = source;
|
||||||
|
|
||||||
src_id = source.__WB_id;
|
src_id = source.__WB_id;
|
||||||
|
|
||||||
window.__WB_source = undefined;
|
this_obj.__WB_source = undefined;
|
||||||
} else {
|
} else {
|
||||||
from = window.WB_wombat_location.origin;
|
from = window.WB_wombat_location.origin;
|
||||||
}
|
}
|
||||||
@ -2293,7 +2294,7 @@ var _WBWombat = function($wbwindow, wbinfo) {
|
|||||||
|
|
||||||
// if passed in origin is the replay (rewriting missed somewhere?)
|
// if passed in origin is the replay (rewriting missed somewhere?)
|
||||||
// set origin to current 'from' origin
|
// set origin to current 'from' origin
|
||||||
if (to_origin == obj.location.origin) {
|
if (to_origin == this_obj.location.origin) {
|
||||||
to_origin = from;
|
to_origin = from;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2302,23 +2303,23 @@ var _WBWombat = function($wbwindow, wbinfo) {
|
|||||||
"src_id": src_id,
|
"src_id": src_id,
|
||||||
"message": message,
|
"message": message,
|
||||||
"from_top": from_top,
|
"from_top": from_top,
|
||||||
}
|
};
|
||||||
|
|
||||||
// set to 'real' origin if not '*'
|
// set to 'real' origin if not '*'
|
||||||
if (targetOrigin != "*") {
|
if (targetOrigin != "*") {
|
||||||
// if target origin is null (about:blank) or empty, don't pass event at all
|
// if target origin is null (about:blank) or empty, don't pass event at all
|
||||||
// as it would never succeed
|
// as it would never succeed
|
||||||
if (obj.location.origin == "null" || obj.location.origin == "") {
|
if (this_obj.location.origin == "null" || this_obj.location.origin == "") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// set to actual (rewritten) origin
|
// set to actual (rewritten) origin
|
||||||
targetOrigin = obj.location.origin;
|
targetOrigin = this_obj.location.origin;
|
||||||
}
|
}
|
||||||
|
|
||||||
//console.log("Sending " + from + " -> " + to + " (" + targetOrigin + ") " + message);
|
//console.log("Sending " + from + " -> " + to + " (" + targetOrigin + ") " + message);
|
||||||
|
|
||||||
return orig.call(obj, new_message, targetOrigin, transfer);
|
return orig.call(this_obj, new_message, targetOrigin, transfer);
|
||||||
}
|
};
|
||||||
|
|
||||||
$wbwindow.postMessage = postmessage_rewritten;
|
$wbwindow.postMessage = postmessage_rewritten;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user