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

使用window.open打开的窗口在IE for newWindow.addEventListener("load",callback,true)中抛出“对象不支持属性或方法”

问题描述:

使用window.open打开的窗口在IE浏览器中,当在newWindow.addEventListener("load",callback,true)中抛出“对象不支持属性或方法”的错误。

回答:

这个问题是由于IE浏览器对于window.open打开的新窗口的事件处理机制存在一些差异导致的。在IE浏览器中,当使用window.open打开一个新窗口时,该新窗口的加载事件可能会在父窗口中的代码执行之前触发,从而导致在newWindow.addEventListener("load",callback,true)中访问到未定义的对象或方法。

解决这个问题的方法是使用setTimeout函数来延迟执行在newWindow.addEventListener("load",callback,true)中的代码,以确保新窗口完全加载后再执行相关操作。具体的代码示例如下:

代码语言:javascript
复制
var newWindow = window.open("url", "_blank");
newWindow.addEventListener("load", function() {
    setTimeout(function() {
        // 在这里执行相关操作
    }, 100);
}, true);

在上述代码中,通过setTimeout函数将相关操作延迟100毫秒执行,以确保新窗口已经完全加载。你可以根据实际情况调整延迟的时间。

此外,还可以使用其他的方法来解决这个问题,比如使用jQuery的ready函数或者检测新窗口的document.readyState属性等。

希望以上解答对你有帮助。如果你有其他问题,欢迎继续提问。

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

相关·内容

浏览器策略更新:网站启用跨域隔离更简单了!

COOP(Cross Origin Opener Policy:跨源程序打开策略)是我们之前文章多次提到一个浏览器安全策略,它可以帮助我们网站创建一个安全隔离环境,从而避免一些 Web 安全风险...攻击者创建一个恶意网站(Site A),并在其中包含以下代码: // Site A打开一个新窗口 var newWindow = window.open('https://target-site.com...', '_blank'); // 监听新窗口加载完成事件 newWindow.addEventListener('load', function() { // 获取新窗口window对象 var...在用户访问时,Site A 会打开一个新窗口标签页,并加载目标网站(target-site.com)。...same-origin-allow-popups:更加宽松,还允许同源页面与其通过 window.open() 打开弹出窗口之间共享信息。

1.2K51
  • 跨域通信

    跨域请求无处不在,下面来看看我们都是如何处理跨域请求方法1 动态创建script 虽然浏览器默认禁止了跨域访问,但并不禁止页面引用其他域JS文件,script标签src属性引用指向接收方一个处理地址...针对iframe 如果两个网页不同源,就无法拿到对方DOM。典型例子是iframe窗口window.open方法打开窗口,它们与父窗口无法通信。...,其他窗口一个引用,比如iframecontentWindow属性、执行window.open返回窗口对象、或者是命名过数值索引window.frames。...发送消息时候,如果目标窗口协议、主机地址端口这三者任意一项不匹配targetOrigin提供值,那么消息就不会被发送;只有三者完全匹配,消息才会被发送。...如何监听 父窗口和子窗口都可以通过message事件,监听对方消息。message事件事件对象event,提供以下三个属性

    1.3K40

    Firefox与IE一些Javascript编程小技巧

    解决方法:统一使用[]获取集合类对象. 3.自定义属性问题 说明:IE下,可以使用获取常规属性方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute...解决方法:直接使用window.open(pageURL,name,parameters)方式打开窗口。...如果需要将frame参数传回父窗口(注意不是opener,而是parent frame),可以frme中使用parent来访问父窗口。...20. ie,firefox以及其它浏览器对于 table 标签操作都各不相同,ie不允许对table和trinnerHTML赋值,使用js增加一个tr时,使用appendChild方法也不管用...需要在about:config打开  dom.allow_scripts_to_close_windows;true  才行,我Firefox版本是Firefox 3.0.4

    52620

    前端猿要了解基本浏览器(BOM)知识

    需要注意是,一般定义变量时,这个变量四个数据属性都默认为 true(这个前面面向对象那里讲过),所以都是可以删除或者修改。...**可是不一样地方就在全局作用域,在此作用域下定义变量数据属性之一 [[Configurable]]**默认为 false,这就导致无法删除,强行使用 delete 是无效 IE9 之前浏览器还会报错...都支持 Opera虽然支持这两个属性,但是与上述 screenLeft 与 screenTop 并不对应,不建议使用在 Opera 关于边距问题 IE、Opera ,screenTop...x,y resizeBy(x,y) 表示水平 y 和垂直 x 方向改变多少个像素 与之前 move 方法类似,但是可能被禁用,比如 Opera 和 IE7+ 就直接禁用了 var w = window.open...导航和打开窗口 window.open() window对象中最为常见方法JS代码里面打开网页最常见方法

    87410

    JavaScriptwindow.open()和Window Location href区别「建议收藏」

    //父页面打开新页面 top.location.href;//顶层页面打开新页面 2:window.open()用法 open() 方法用于打开一个新浏览器窗口查找一个已命名窗口。...指定target属性窗口名称。支持以下值: _blank – URL加载到一个新窗口。...支持下面的值: true – URL 替换浏览历史的当前条目。 false – URL 浏览历史创建新条目。 _blank – URL加载到一个新窗口。...支持下面的值: true – URL 替换浏览历史的当前条目。 false – URL 浏览历史创建新条目。...3: window.open和window.location.href区别 1:区别 window.location是window对象属性,而window.open是window对象方法 window.location

    5K20

    控制台禁用js_禁止直接访问js

    document.addEventListener(‘'contextmenu'’, function(event){ return event.returnValue = false }) 激活成功教程:还可以使用浏览器菜单开发者工具打开控制台...(){}; devtools.toString = function() { console.log('控制台打开了'); //执行一段死循环 window.open("about...ie不支持console.table //console.info(dom); console.log(dom); } 除了使用console.log,我们还可以使用console.info...上述方法需要注意浏览器对于defineProperty支持,另外在firefox浏览器失效,因为firefox浏览器对于对象监听属性不会取值,需要手动点开才会触发。...代码测试仅测试了firefox、ie、chrome浏览器及部分chrome内核浏览器(如360、qq浏览器、UC浏览器、搜狗浏览器) 5、利用debugger特性,无限递归 这个方法不能监测控制台被打开

    9.8K20

    原 八、BOM

    Opera里这两个属性和screenLeft、screenTop属性不对应,所以建议Opera不要使用它们。 moveTo() 和 moveBy():将窗口精确地移动到一个新位置。...window.open():可以导航到一个特定URL,也可以打开一个新浏览器窗口。...本章讨论了下列BOM组成部分。 使用框架时,每个框架都有自己 window 对象以及所有原生构造函数及其他函数副本。每个框架都保存在 frames 集合,可以通过位置通过名称来访问。...使用 location 对象可以通过编程方式来访问浏览器导航系统。设置相应属性,可以逐段整体性地修改浏览器URL。...history对象为访问浏览器历史记录开了一个小缝隙,开发人员可以据此判断历史记录数量,也可以历史记录向后向前导航到任意页面。

    87250

    web跨域解决方案

    缺点: 兼容性方面相对差一点,ie10或以上才支持 3、document.domain+iframe设置  (只有主域相同时候才能使用方法) 原理:   浏览器不同域框架之间是不能进行js...页面,要等iframe标签完成加载B页面之后,再取iframe对象contentDocument,否则如果B页面没有被iframe完全加载,A页面通过contentDocument属性就取不到B...; var win = iframe.documentWindow;   2、JavaScript打开弹窗: var win = window.open();   3、当前文档窗口窗口: var...对象实例,该对象有三个属性: data : 消息 origin:消息来源地址 source:发送消息窗口window对象引用 使用方法(案例): http://test.com/index.html...,可以使用它来向其它window对象发送消息,无论这个window对象是属于同源不同源,目前IE8+、FireFox、Chrome、Opera等浏览器都已经支持window.postMessage方法

    2.7K100

    【兼容性】js 浏览器兼容问题处理方式

    因为IEevent作为window对象一个属性可以直接使用,但是Firefox使用了W3C模型,它是通过传参方法来传播事件,也就是说你需要为你函数提供一个事件响应接口。...xhr)return; return xhr; } 模态和非模态窗口 问题描述: IE可以通过showModalDialog和showModelessDialog打开模态和非模态窗口...兼容处理: 直接使用window.open(pageURL,name,parameters)方式打开窗口。 如果需要传递参数,可以使用frame或者iframe。...i].outerHTML = null; img 对象 alt 和 title 解析 问题描述: img对象有alt和title两个属性,区别在于,alt:当照片不存在或者load错误时提示。...title:照片tip说明, IE如果没有定义title,alt也可以作为imgtip使用,但是Firefox,两者完全按照标准定义使用 兼容处理: 最好将alt和title对象都写全

    32620

    那些年前端跨过

    window.name 属性神奇地方在于 name 值不同页面(甚至不同域)加载后依旧存在,且没有修改情况下不会变化。...(也可以是空白页) 当 iframe 再次 load,即可以操作 iframe 对象 contentWindow.name 属性,获取数据源页面设置 window.name 值 注意:当数据源页面载入成功后...', function () { // 如果未设置相同主域,那么可以获取到 iframeWin 对象,但是无法获取 iframeWin 对象属性方法 const iframeWin = iframe.contentWindow...是 HTML5 XMLHttpRequest Level 2 API,可以安全实现跨域通信,它可用于解决以下方面的问题: 页面和其打开窗口数据传递 多窗口之间消息传递 页面与嵌套 iframe...对象,比如 iframe contentWindow,执行 window.open 语句返回窗口对象等。

    2K60

    window.opener.location 安全风险讨论

    浏览器,通过 标签或者 JavaScript window.open 函数,可以打开新页面。新页面的 window 对象,存在一个 opener 属性,保存对父页面的引用。...但是,子页面访问 opener.location 一些属性方法时却不受 SOP 保护,这就是本文要探讨问题核心所在。...大部分浏览器,通过父页面链接打开子页面后,子页面都可以通过opener.location 将父页面跳走(上面两行 JS 可以都可以跳转,不同之处是 replace 不产生历史纪录)。...方案 1,最新 Safari 下不能阻止跳转,并且会导致 IE 系列丢失 Referrer;方案 2,不支持 rel=noreferrer IE 中等同于默认情况,在其它浏览器可以阻止跳转,...:建议 CSP3 增加 disown-window-opener 指令,详情; 到这里为止,我们讨论都是「新窗口打开子页面将父页面跳走」所带来风险。

    1.7K60

    Web前端学习笔记之前端跨域知识总结

    第二个限制是浏览器不同域框架之间是不能进行js交互操作。不同框架之间是可以获取window对象,但却无法获取相应属性方法。...对象,但该window对象属性方法几乎是不可用 var doc = win.document;//这里获取不到iframe里document对象 var name...:指目标窗口,也就是给哪个window发消息,是 window.frames 属性成员或者由 window.open 方法创建窗口 message: 是要发送消息,类型为 String、Object...CORS背后基本思想就是使用自定义HTTP头部让浏览器与服务器进行沟通,从而决定请求响应是应该成功还是失败。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。...0x07 通过window.name跨域 window对象有个name属性,该属性有个特征:即在一个窗口(window)生命周期内,窗口载入所有的页面都是共享一个window.name,每个页面对

    1.1K30

    史上最全跨域总结

    ,但是有几个条件是必不可少: iframe标签跨域能力 window.names属性文档刷新后依然存在能力 location.hash + iframe 跨域 此跨域方法和上面介绍比较类似,...都是利用全局对象属性方法,然后这两种方法和jsonp也是一样,就是只能够实现get请求 postMessage跨域 这是由H5提出来一个炫酷API,IE8+,chrome,ff都已经支持实现了这个功能...window发送消息,是window.frames属性成员或者是window.open方法创建窗口。...IE8+:IE8/9需要使用XDomainRequest对象来支持CORS。 整个CORS通信过程,都是浏览器自动完成,不需要用户参与。...另一方面,开发者必须在AJAX请求打开withCredentials属性

    1.8K40

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

    浏览器地址栏输入地址,然后点击跳转; 点击页面的链接实现跳转; 关闭刷新当前页面; 操作当前页面的Location对象,修改当前页面地址; 调用window.navigate实现跳转; 调用window.open...document.open方法在当前页面加载其他页面重新打开输入流。...对于我需求就是页面的Dispose方法调用登出API,经过和实施同事沟通——只要刷新页面就触发登出。.../confirm/prompt/showModalDialog却恰恰就会阻塞当前线程,因此H5规范以明确beforeunload和unload中直接无视这几个方法调用。...事件发生顺序:load->pageshow->pagehide->unload pageshow和pagehide事件对象存在一个persisted属性,为true时表示从cache恢复,false

    2.3K90

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券