如何检测window.open
how to detect window.open
我正在尝试解决一个场景,让我试着用一个例子来解释。我有一个脚本尝试使用 window.open 方法打开一个新的 url。此脚本会在 5 秒后触发 window 打开,而无需用户点击任何事件。我想做的是..捕获 window open 方法。是否有像 addEventListener 这样的函数可以捕获 window open 方法?我想跟踪不是由用户操作启动的 window.open。
谢谢
林恩
setTimeout(function(){
window.open(url,name);
}, 5000);
你可以替换它
注意:window.open 由于沙箱的原因,在 Whosebug 中不起作用
此外,未由用户操作触发的 window.open 可能会被浏览器抑制
const saveOpen = window.open;
window.open = function(url,windowName,parms) {
console.log("triggered",url);
saveOpen(url, windowName || "",parms || "")
};
const url = "https://whosebug.com", windowName="myWin"
setTimeout(function(){
window.open(url,windowName);
}, 1000);
如 How to call a function of another window in javascript? 中所述,您可以将加载事件侦听器附加到 window:
const loaded = function(str) { console.log(str) },
url = "https://whosebug.com", windowName="myWin";
setTimeout(function(){
const w = window.open(url,windowName);
if (w) w.addEventListener('load',function() { loaded(url)})
else console.log('sorry, not allowed'); // this of course can be a call to whatever
}, 1000);
我正在尝试解决一个场景,让我试着用一个例子来解释。我有一个脚本尝试使用 window.open 方法打开一个新的 url。此脚本会在 5 秒后触发 window 打开,而无需用户点击任何事件。我想做的是..捕获 window open 方法。是否有像 addEventListener 这样的函数可以捕获 window open 方法?我想跟踪不是由用户操作启动的 window.open。
谢谢 林恩
setTimeout(function(){
window.open(url,name);
}, 5000);
你可以替换它
注意:window.open 由于沙箱的原因,在 Whosebug 中不起作用 此外,未由用户操作触发的 window.open 可能会被浏览器抑制
const saveOpen = window.open;
window.open = function(url,windowName,parms) {
console.log("triggered",url);
saveOpen(url, windowName || "",parms || "")
};
const url = "https://whosebug.com", windowName="myWin"
setTimeout(function(){
window.open(url,windowName);
}, 1000);
如 How to call a function of another window in javascript? 中所述,您可以将加载事件侦听器附加到 window:
const loaded = function(str) { console.log(str) },
url = "https://whosebug.com", windowName="myWin";
setTimeout(function(){
const w = window.open(url,windowName);
if (w) w.addEventListener('load',function() { loaded(url)})
else console.log('sorry, not allowed'); // this of course can be a call to whatever
}, 1000);