2

这个真的让我很头疼:

使用javascript(比如说page1.html)我使用类似于下面的代码来启动一个新窗口:

var popwindow = window.open("http://www.stackoverflow.com");

然后我将popwindow变量传递给一个函数,该函数用于setTimeout每 3 或 4 秒重复一次(我不认为这部分不太重要)。这个小循环代码所做的是(应该)检查location弹出窗口的对象以查看 url 何时更改并包含某些特定的查询字符串变量。

在大多数情况下,这是有效的;代码重复,并且使用萤火虫,我可以看到窗口对象正在按应有的方式传递。

不过我的问题是,每当我尝试对popwindow.location.hrefor进行任何访问时popwindow.location.search,javascript 都会崩溃。我什至只是尝试自己做一个popwindow.location.toString()来把这些东西拿出来,但这也崩溃了。

当我使用萤火虫时,我可以看到location我试图访问的对象是一个合法的location实例;location当我暂停脚本时,firebug 允许我浏览对象的字段。但是,当我尝试访问这些东西时(我没有写信给它们,只读取值)它永远不会工作......如果它有帮助,我正在使用最新版本的 firefox(我相信 5.0)。

4

2 回答 2

2

如果引用的窗口与您正在运行的脚本所在的窗口不在同一个域中,则浏览器将不允许您访问跨域窗口。它会抛出异常。

于 2011-07-27T19:53:09.263 回答
1

来自https://developer.mozilla.org/En/DOM/Window.open

窗口对象引用

这是指向新创建的浏览器窗口的引用。这个引用是 open() 方法的返回值;如果由于某些原因执行没有成功打开窗口,它将为空。最好使用全局变量来存储此类引用。然后,您可以使用它来查找新窗口的属性或访问其方法,假设您的主窗口与辅助窗口关系符合同源策略安全要求。

我怀疑这可能是你的问题。“同源政策”链接更详细地记录了要求。

于 2011-07-27T19:55:19.187 回答