首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

window.open在chrome和safari上附加onload事件时无法正常工作

在 Chrome 和 Safari 上,window.open 方法在附加 onload 事件时可能会遇到问题。这是因为这两个浏览器对于 window.open 方法的实现和处理方式有所不同。

为了解决这个问题,您可以尝试使用以下方法:

  1. 使用 window.addEventListener 方法来监听 load 事件,而不是直接在 window.open 方法中附加 onload 事件。
代码语言:javascript
复制
const newWindow = window.open('https://example.com');
newWindow.addEventListener('load', () => {
  console.log('Window loaded');
});
  1. 如果您需要在新窗口中执行某些操作,可以在新窗口中使用 window.opener 属性来访问父窗口,并在父窗口中执行相应的操作。
代码语言:javascript
复制
const newWindow = window.open('https://example.com');
newWindow.opener.postMessage('Window loaded', '*');

在上面的示例中,我们使用 window.opener.postMessage 方法向父窗口发送消息,以通知它新窗口已经加载完成。

需要注意的是,由于浏览器的安全策略,window.opener 属性可能会被禁用,因此在使用 window.opener 属性之前,请确保它可用。

总之,window.open 方法在 Chrome 和 Safari 上附加 onload 事件时可能会遇到问题,但可以通过使用 window.addEventListener 方法和 window.opener 属性来解决这些问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

HTML a标签打开新标签页避免出现安全漏洞,请使用“noopener”

现在恶意网站可以访问你网站的 window,这显然重定向此方法打开了一个安全漏洞。...因此,将用户导航到你未维护的新域,请当心。...这次,opener 再次为空,因此它无法访问第一个网站的 window 变量。 问题解决了。 但是旧版本的Safari中将无法使用此方法,因此我们再次遇到问题。 如何解决Safari的问题?...其他事实: 当您在锚标记上单击 CMD + LINK Chrome,FirefoxSafari会将恶意网站的 window.opener 视为 null。...但是,通过JavaScript处理新标签页打开的元素的 CMD + LINK ,浏览器将附加窗口变量并将其发送到新标签页。

2.5K30
  • 深入理解iframe

    但带来一些其它的问题:onload 事件以及连接池(connection pool) 2、阻塞页面加载 及时触发 window 的 onload 事件是非常重要的。...onload 事件触发使浏览器的 “忙” 指示器停止,告诉用户当前网页已经加载完毕。当 onload 事件加载延迟后,它给用户的感觉就是这个网页非常慢。...window 的 onload 事件需要在所有 iframe 加载完毕后(包含里面的元素)才会触发。... Safari Chrome 里,通过 JavaScript 动态设置 iframe 的 SRC 可以避免这种阻塞情况 3、唯一的连接池 浏览器只能开少量的连接到 web 服务器。...Safari 3+ Opera 9+ 可同时对一个域名打开 4 个连接,Chrome 1+, IE 8 以及 Firefox 3 可以同时打开 6 个 绝大部分浏览器,主页面其中的 iframe

    4.2K10

    iframe 有什么好处,有什么坏处?

    但带来一些其它的问题:onload 事件以及连接池(connection pool) 2、阻塞页面加载 及时触发 window 的 onload 事件是非常重要的。...onload 事件触发使浏览器的 “忙” 指示器停止,告诉用户当前网页已经加载完毕。当 onload 事件加载延迟后,它给用户的感觉就是这个网页非常慢。...window 的 onload 事件需要在所有 iframe 加载完毕后(包含里面的元素)才会触发。... Safari Chrome 里,通过 JavaScript 动态设置 iframe 的 SRC 可以避免这种阻塞情况 3、唯一的连接池 浏览器只能开少量的连接到 web 服务器。...Safari 3+ Opera 9+ 可同时对一个域名打开 4 个连接,Chrome 1+, IE 8 以及 Firefox 3 可以同时打开 6 个 绝大部分浏览器,主页面其中的 iframe

    4.1K10

    JS魔法堂:定义页面的Dispose方法——unload事件启示录

    即使页面上增添一个登出按钮也无法保证用户不会直接关掉浏览器,更何况用户已经习惯这样做,增加功能好弄,改变习惯却难啊。...(beforeunload事件的Cancelable属性值为Yes) beforeunloadunload的兼容性  对于移动端浏览器而言(Safari, Opera Mobile等)而言不支持beforeunload...但请记住一点:由于[before]unload事件会降低页面性能,因此仅由于需要做重要的善后或不可逆的清理工作才监听这两个事件。  ...存在Expires超期的 发生跳转,页面存在未加载完的资源 旗下iframe存在上述情况的 页面iframe中渲染,当用户修改iframe.src加载其他文档到该iframe  因此若执行不可逆的清理工作...假如在index.html订阅了unload或beforeunload事件,那么该页面将不会保存到bfcache。

    2.3K90

    前端下载文件的5种方法的对比

    道理也很简单,为一个下载按钮添加 click事件,点击动态生成一个表单,利用表单提交的功能来实现文件的下载(实际上表单的提交就是发送一个请求) 来看下如何生成一个表单,生成怎么样的一个表单: /**...无法直接下载浏览器可直接预览的文件类型(如txt/png等) open或location.href 最简单最直接的方式,实际跟 a标签访问下载链接一样 window.open('downloadFile.zip...但是需要注意一些信息: Edge 13尝试下载data url链接时会崩溃。 Chrome 65及以上版本只支持同源下载链接。 Firefox只支持同源下载链接。...Safari浏览器上访问 BlobUrl或 ObjectURL是有缺陷的,如下文中通过 URL.createObjectURL生成的链接 第二点,这就导致这里以下的方案需留意适用于Safari的使用。...因为发请求已设置返回数据类型为 Blob类型( xhr.responseType='blob'),所以 target.response就是一个 Blob对象,打印出来会看到两个属性 size type

    7.2K63

    javascript基础-3

    ()打开的窗口,没有window.open(),则控制台显示“无法使用脚本关闭非脚本打开窗口”; eg: var openedWindow...早期主要用于测试可疑软件等); 引用第三方内容; 独立的交互内容; 需要保持独立焦点历史管理的子窗口(ajax中会面临用户无法退回一步的情况,可以用iframe解决,ajax下面会说) 举例,...: method:请求的类型;GET 或 POST url:文件服务器的位置,任何形式的服务器脚本文件,.txt/.xml/.asp/.php; async:true(异步,浏览器可以做其他事)...然而,以下情况中,请使用 POST 请求: 无法使用缓存文件(更新服务器的文件或数据库) 向服务器发送大量数据(POST 没有数据量限制) 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠...每当 readyState 改变,就会触发 onreadystatechange 事件

    1K20

    H5的Notification特性 - Web的桌面通知功能

    就是当前通知的实例,该实例,我们可以查询该通知的配置,监听事件,调用实例方法。...4.4.1 关闭通知 instanceNotification.close() 没有设置不自动关闭的话,chrome通知将会在4.5秒左右自动关闭通知,safari则是5秒钟(无法设置不自动关闭)。...例如:用定时器5秒后才监听通知的点击显示事件,则永远不会触发通知显示的回调,点击事件5秒后才可以正常起作用但会错误五秒之前用户的点击。...(safari正常出现) 7.6 safari下面不能显示icon safari下面,同一个网站(比如谷歌),同样的代码,chorme可以正常显示icon,safari却没有icon,也没有报错...7.7 连续触发 safarichrome下短时间内连续触发通知(不设tag,不设requireInteraction),会出现如下表现: 这个表现,通知没有icon、标题、内容,就显得没有意义了

    2.2K20

    Electron加载插件支持Flash

    如图 老版本的Chrome下载 里面带有pepflashplayer插件 https://www.slimjet.com/chrome/google-chrome-old-version.php 这里推荐下载...('https://www.psvmc.cn')">open 分别是: _blank .open 实际运行情况是: 正常的浏览器中,这两种情况都是能新开窗口的。...所以添加allowpopups 属性,就可以解决面的情况, _blank的页面添加allowpopups后也无法打开 为了保证两种方式都能正常打开,页面中添加JS,注意 这时候不要添加allowpopups...所以我们就要在主进程中做如下操作 最外层 BrowserWindow 的 webContents 监听 did-attach-webview 事件,获取新挂上去的 的 webContents...这时候,我们就可以 will-navigate 事件中使用 e.preventDefault() 阻止 导航至其他网页了 代码如下: mainWindow.webContents.on

    3.7K40

    前端之BOMDOM

    /537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36" 1.2.2screen对象(了解) 屏幕对象,不常用。...4.0 的新特性之一,使 HTML 事件触发浏览器中的动作(action),比如当用户点击某个 HTML 元素启动一段 JavaScript。...应用场景: 当用户最后一个输入框按下回车按键,表单提交. onkeypress 某个键盘按键被按下并松开。 onkeyup 某个键盘按键被松开。...onselect 文本框中的文本被选中发生。 onsubmit 确认按钮被点击,使用的对象是form。...因为我们无法给一个不存在的元素绑定事件。 window.onload事件文件加载过程结束的时候触发。此时,文档中的所有对象都位于DOM中,并且所有图像,脚本,链接子框架都已完成加载。

    2.7K30

    滥用Edge浏览器的“恶意站点警告”特性,实现地址栏欺骗

    事实,通过使用continuous history.pushState trick 技巧Jeromesegura(twitter)发送给我的Chrome版本真的能冻结浏览器。...SmartScreen Demo中有很多样本,我选择了Malware Page。 ? 我知道其他浏览器(至少IE以及Chrome)也在做同样的事情,我很高兴Edge也能看到。...我们希望的是浏览器拒绝执行某些操作依旧保持无响应,或是浏览器至少弹出一个建议或者是错误提示。...这是速度的问题:现在我们可以使用一个try/catch快速重试,另一方面使用location.href加载一个空值,这使得我们能够依靠timeout或者一个事件(onload/onerror)以观察发生了什么...”); 现在Edge允许我们加载资源了,附加一个URL。

    1.5K90

    JavaScrtip之JS最佳实践

    2.使用内嵌的事件处理函数 事件处理函数将通过onclick方法来调用popUp()具体实现方式和我之前JS图片库的第一版一样http://www.cnblogs.com/GreenLeaves/...但是假设用户是一个搜索机器人(只有极少数的搜索机器人能够理解JavaScript代码),他们浏览网页的目的是为了把各种网页添加到搜索引擎的数据库里,如果你的JavaScrip网页不能平稳退化,那么他们搜索引擎的排名就可能大受损害...绝大多数浏览器都能或多或少地支持JavaScript,绝大多数现代浏览器对DOM的支持都非常不错,但是还是有极少数古老的浏览器可能无法理解,所以这种情况下,即使这类用户使用的是支持JavaScript的浏览器某些脚本也不一定能正常工作...所以针对上述浏览器,为了确保JS代码能够正常运行,我们必须检测浏览器对JavaScript的支持程度,代码如下: window.onload = alert1; function checkCompatibility...这样可以减少加载页面发送的请求数量。而减少请求数量通常都是性能优化时首先要考虑的!

    2.1K50
    领券