2
alert(document.getElementById('external-site').contentWindow.location.href);

大家好,此代码在Chrome中运行并显示“未定义”,但在Mozilla Firefox中显示错误。

错误:访问属性“href”的权限被拒绝

4

3 回答 3

2

如果document.getElementById('external-site')指的是从不同域加载页面的 iframe,则 firefox 会遇到same-origin policy错误并且您无法访问window.location对象

来自MDN

同源策略防止从一个源加载的文档或脚本从另一个源获取或设置文档的属性。该政策可以追溯到 Netscape Navigator 2.0。

于 2012-05-30T07:16:42.980 回答
0

既然你想要做的就是“检查”它是否是外部的,为什么不捕捉错误呢?似乎在 FF 和 Chrome 中工作。请参阅jsFiddle

try {
    alert(document.getElementById('external-site').contentWindow.location.href);
}
catch (err) {
    alert("undefined");
}
于 2012-05-30T13:52:47.423 回答
0

我也遇到了同样的错误。

为了克服这个错误,我使用了以下代码行:

alert(document.getElementById('external-site').contentWindow.document.location.href);

于 2018-10-25T13:01:30.900 回答