我知道我无法访问iframe中的数据,该iframe显示来自其他域的页面。这非常好,但我想检测一下,iframe当前是显示来自我的域名还是外部的页面。
我的第一次尝试是尝试访问
$('iframe')[0].contentWindow.document
包含在try {} catch {}
中,如果抛出错误,则意味着我无法访问它,因此iframe页面必须是外部的。
这听起来像一个完美的解决方案,但事情是safari发布了一个“不安全的JavaScript尝试访问带URL的帧”消息到javascript控制台。
这不仅是丑陋的,还可能导致其他或未来的浏览器向用户显示明确的安全警告?
答案 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;