在所有浏览器中使用window.opener的问题

时间:2011-05-10 18:56:50

标签: javascript firefox internet-explorer-9

好的,我在这里遇到了严重的问题。在我自己的计算机上,这段代码运行得很好。但在我的同事身上,它在IE和Firefox中打破了。

var openlocation = window.opener.location.href;

在window.opener部分中断“Permission Denied”。因此,在开启者页面上,我编写了一个存储在外部.js页面中的函数:

var getLocation = function() {
    return window.location.href;
};

然后调用,就像 var openlocation = window.opener.getLocation();

有没有人知道为什么这会破坏?

编辑:一个页面正在创建弹出窗口,它们都在同一个域中。 弹出页面包含以下代码:


$(document).ready(function () {
    var openlocation = window.opener.getLocation();
    (function setTimer() {
        setInterval(function () {
            if (window.opener.location.href != openlocation) {    // they've changed screens
                window.close();
            }
        }, 15000);
    })();
  $("input#notescancel").click(function () {
        window.close();
  });
});

我已尝试同时使用getLocation()功能并使用window.opener.location.href,但对于除我的所有计算机,它都会中断。 感谢。

2 个答案:

答案 0 :(得分:1)

可能是因为2个窗口位于不同的域上。即使是sample.com和www.sample.com也被浏览器视为不同。从技术上讲,它被称为同源政策,

https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript

答案 1 :(得分:1)

我明白了。我要深入到window.opener.location - 对于IE,我应该在那里停止它,将它转换为字符串,并称之为好。这就是我所做的,它现在有效。

因此,我只使用window.opener.location.toString()代替window.opener.location.href。