javascript:检查iframe url是否是相同的域或外部内容
我知道我无法访问iframe中显示来自另一个域的页面的数据。这很好,但我想检测iframe当前是否显示来自我域的页面或外部内容 我的第一次尝试是尝试访问javascript:检查iframe url是否是相同的域或外部内容,javascript,iframe,same-origin-policy,Javascript,Iframe,Same Origin Policy,我知道我无法访问iframe中显示来自另一个域的页面的数据。这很好,但我想检测iframe当前是否显示来自我域的页面或外部内容 我的第一次尝试是尝试访问 $('iframe')[0].contentWindow.document 包装在try{}catch{}中,如果抛出错误,则意味着我无法访问它,因此iframe页面必须是外部的。 这听起来是一个完美的解决方案,但问题是safari向JavaScript控制台发布了一条“不安全的JavaScript尝试使用URL访问框架”消息。 这不仅难看,
$('iframe')[0].contentWindow.document
包装在try{}catch{}
中,如果抛出错误,则意味着我无法访问它,因此iframe页面必须是外部的。
这听起来是一个完美的解决方案,但问题是safari向JavaScript控制台发布了一条“不安全的JavaScript尝试使用URL访问框架”消息。
这不仅难看,而且可能会导致其他或未来的浏览器向用户显示明确的安全警告?如果这是您的HTML:
<iframe src="http://www.google.com" width="100%" height="300" id='iframe'>
<p>Your browser does not support iframes.</p>
</iframe>
然后使用它与您的域进行比较?为什么不检查iframe中的href属性是否与您的域相同
parent.frames[1].location.href;
你能试试使用吗
如果没有响应,则为外部域。您的解决方案似乎完全有效。不要注意Safari发出的噪音,因为终端用户看不到。顺便说一句,当您加载www.apple.com时,Safari控制台中也会出现警告。警告通常不需要担心(尽管它们可能非常烦人,而且,IMHO,应该是控制台应该允许您过滤的东西。)thanx,我现在就不说了。
src
总是返回初始值,但是iframe页面肯定会因为以下链接而改变/在iframe中提交表单应该仍然足以知道它是否在同一个域中,除非您通过在iframe中的某个链接以某种方式在自己的域中结束,否则初始值应该可以,不是吗?有可能吗?这会导致安全错误。您甚至无法检查location对象中是否存在键“href”或“origin”或任何其他内容:(
parent.frames[1].location.href;