Firefox AddEventListener问题

shi*_*mbu 3 javascript firefox

我有一个Web应用程序,包含两个网站 - 一个在端口8080(Java)上运行,另一个在端口80(IIS)上运行.Java网页调用IIS网页,偶尔会回调到Java网页以获取其他信息.处理数据通信/交换的JavaScript 在IE中工作,但在Firefox中不起作用.

第1页(IIS)> onClick of Button>第2页(Java/Tomcat)>用户关闭弹出窗口>数据传输到第1页

JavaScript:

if(window.attachEvent){//IE exclusive method for binding an event
    alert("AttachEvent");
    window.attachEvent("onfocus", Focus_onfocusEvent); 
    window.objExitPopupWindow.attachEvent("onunload", Focus_onunloadExitEvent);
} else if(window.addEventListener){//DOM method for binding an event. W3C standard          
    try{
        alert("Event Listener");
        window.addEventListener("focus", Focus_onfocusEvent, true);
        window.objExitPopupWindow.addEventListener("unload", Focus_onunloadExitEvent, true);
    } catch(err) {
            alert(err);
    }   
}   
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是:

a)在Firefox中,如果我alert("Event Listener");启用了,那么我会收到错误消息 Error: Permission denied for "http://localhost" to get property Window.addEventListener from "http://localhost:8080".

b)在Firefox中,如果我没有启用警报,则没有显示错误消息,但它看起来像是Focus_onuloadExitEvent先执行Focus_onfocusEvent,所有这些都在打开弹出窗口的过程中.关闭弹出窗口不会触发Focus_onunloadExitEvent.

如何确保代码在Firefox和IE中正常运行 - 即.我想要onfocusEvent弹出弹出焦点并onunloadEvent触发弹出卸载.

Mik*_*ike 5

这是相同的原产地政策.你不能有JavaScript的加载由文档在主机A上访问或从主机B加载由于你的一台主机是一个文档中的修改内容localhost:80,另一种是localhost:8080,这些被认为是由浏览器不同的主机.

在您的特定情况下,解决方案是将弹出页面放在与打开它的页面相同的服务器上,并将弹出窗口中的iframe指向另一个主机上的内容.这样你的JavaScript就能将事件监听器附加到弹出窗口本身.