首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测window.open

如何检测window.open
EN

Stack Overflow用户
提问于 2021-09-20 16:26:20
回答 1查看 81关注 0票数 1

我正在尝试解决一个场景,让我试着用一个例子来解释。我有一个脚本,试图打开一个新的网址使用window.open方法。此脚本在用户没有任何单击事件的情况下,在5秒后触发窗口打开。我想做的是..捕获窗口打开方法。有没有像addEventListener这样的函数来捕获打开窗口的方法?我想要跟踪不是由用户操作启动的window.open。

谢谢Lynn

代码语言:javascript
复制
setTimeout(function(){
window.open(url,name);
}, 5000); 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-20 16:31:16

你可以替换它

注意:由于沙箱的原因,window.open在堆栈溢出中不起作用,而且不是由用户操作触发的window.open可能会被浏览器抑制

代码语言:javascript
复制
const saveOpen = window.open;
window.open = function(url,windowName,parms) {
  console.log("triggered",url);
  saveOpen(url, windowName || "",parms || "")
};
const url = "https://stackoverflow.com", windowName="myWin"
setTimeout(function(){
  window.open(url,windowName);
}, 1000); 

正如在How to call a function of another window in javascript?中提到的,您可以将load事件侦听器附加到窗口:

代码语言:javascript
复制
const loaded = function(str) { console.log(str) },
url = "https://stackoverflow.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);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69257873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档