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

Mar*_*sen 9 javascript iframe same-origin-policy

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

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

$('iframe')[0].contentWindow.document
Run Code Online (Sandbox Code Playgroud)

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

Zen*_*ter 0

如果这是您的 HTML:

<iframe src="http://www.google.com" width="100%" height="300" id='iframe'>
  <p>Your browser does not support iframes.</p>
</iframe>
Run Code Online (Sandbox Code Playgroud)

是不是就这么简单:

var iframeEl = document.getElementById('iframe')
var src = iframeEl.src;
Run Code Online (Sandbox Code Playgroud)

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

  • `src` 总是返回初始值,但是 iframe 页面肯定会因为以下链接/在 iframe 内提交表单而发生变化 (3认同)