这个真让我头疼:
使用javascript(让我们说在page1.html上)我使用类似于下面的代码来启动一个新窗口:
var popwindow = window.open("http://www.stackoverflow.com");
然后我将popwindow
变量传递给一个使用setTimeout
每3或4秒重复一次的函数(这部分不太重要,我不认为)。这个小循环代码的作用是(应该)检查弹出窗口的location
对象,以查看url何时更改并包含某些特定的查询字符串变量。
在大多数情况下,这是有效的;代码重复,并使用firebug,我可以看到窗口对象正在按原样传递。
我的问题是,无论何时我尝试访问popwindow.location.href
或popwindow.location.search
,javascript都会崩溃。我甚至只是试着做popwindow.location.toString()
来自己解决这个问题,但也崩溃了。
当我使用firebug时,我可以看到我尝试访问的location
对象是一个合法的location
实例;当我暂停脚本时,firebug允许我浏览location
对象的字段。然而,当我尝试访问这些东西时(我不是写它们,只读取值)它永远不会工作......万一它有用,我使用的是最新版本的firefox(5.0我相信)。 / p>
答案 0 :(得分:2)
如果引用的窗口与您正在运行的脚本所在的窗口不在同一个域中,则浏览器将不允许您访问跨域窗口。它会引发异常。
答案 1 :(得分:1)
来自https://developer.mozilla.org/En/DOM/Window.open
windowObjectReference
这是指向新创建的浏览器窗口的引用。此引用是open()方法的返回值;如果由于某些原因执行没有成功打开窗口,它将为null。全局变量最适合用于存储此类引用。例如,您可以使用它来查找新窗口的属性或访问其方法,假设您的主窗口关系符合Same origin policy安全要求。
我怀疑这可能是你的问题。 “同源政策”链接更详细地记录了这些要求。