javascript:检查iframe网址是否是同一个域或外部的东西

时间:2011-09-14 14:15:40

标签: javascript iframe same-origin-policy

我知道我无法访问iframe中的数据,该iframe显示来自其他域的页面。这非常好,但我想检测一下,iframe当前是显示来自我的域名还是外部的页面。

我的第一次尝试是尝试访问

$('iframe')[0].contentWindow.document

包含在try {} catch {}中,如果抛出错误,则意味着我无法访问它,因此iframe页面必须是外部的。 这听起来像一个完美的解决方案,但事情是safari发布了一个“不安全的JavaScript尝试访问带URL的帧”消息到javascript控制台。 这不仅是丑陋的,还可能导致其他或未来的浏览器向用户显示明确的安全警告?

3 个答案:

答案 0 :(得分:1)

您可以尝试使用postMessage吗?

如果没有回复,则表示是外部域名。

答案 1 :(得分:0)

如果这是您的HTML:

<iframe src="http://www.google.com" width="100%" height="300" id='iframe'>
  <p>Your browser does not support iframes.</p>
</iframe>

不会那么简单:

var iframeEl = document.getElementById('iframe')
var src = iframeEl.src;

然后用它来与您的域名进行比较?

答案 2 :(得分:0)

为什么不检查iframe中的href属性是否与您的域相同?

parent.frames[1].location.href;