我想addProgressListener()来处理我加载的页面的onLocationChange.但是,我的处理程序并不总是被调用.
更具体地说,这是我在做什么:
>创建浏览器元素,而不设置其src属性
>将其附加到另一个元素
>添加一个进度监听器,监听onLocationChange到浏览器元素
>使用所需的URL和post数据调用loadURIWithFlags()
我期望在4之后每次调用处理程序,但有时它不会(似乎被困在同一页面上).
有趣的是,如果我将3和4包在一个setTimeout(…,5000)中;它每次都工作.
我也尝试洗牌一些步骤,但没有任何影响.
更大的图景:当浏览器的contentDocument是新加载的页面(重定向后)时,我想被可靠地通知.有没有更好的方法来做到这一点?
更新:我已经开发了一个bug的mozilla的bug跟踪器与一个最小的xulrunner应用程序显示这种行为,以防任何人想要仔细观察:https://bugzilla.mozilla.org/show_bug.cgi?id=941414
解决方法
var newbrowser = window.document.createElement('browser'); newbrowser.setAttribute('flex','1'); newbrowser.setAttribute('type','content'); cacheFrame.insertBefore(newbrowser,null);
,您的浏览器可能还没有准备好.当你添加延迟时,事情有时间初始化,所以他们工作正常.此外,当您做动态创建浏览器元素时,您可能会做的事情很少有人尝试过.换句话说,这听起来像是Firefox中的一个bug,也可能是一个不太受关注的bug.
您说您正在使用onLocationChange,以便您可以知道何时添加负载侦听器.自从你提到之后,我会猜测你正在将内容加载器添加到contentDocument中.您可以做的是将负载侦听器添加到浏览器本身,就像使用iframe一样.如果我更换
newbrowser.addProgressListener(listener);
同
newbrowser.addEventListener("load",function(e) { console.log('got here! ' + e.target.contentDocument.location.href); },false);
然后我收到每个浏览器的通知.
原文地址:https://www.jb51.cc/js/153045.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。