" 检测iframe是否为跨域 "的" 万无一失的方法 "的答案描述了一种方法,用于测试页面上的iframe是指向同域还是跨域页面,解决不同浏览器对跨域策略的解释和避免会中断用户或停止javascript的错误消息.
我正在寻找相当于这个但是从 iframe内部的子页面测试它是否在跨域iframe 内部.
可以通过全局访问(相同域)有关父级的信息,但有没有可靠的方法来执行此跨浏览器,而不会在检测到父级是跨域时崩溃到错误?parentparent.document.location
对于方便的测试,这里是一个jsfiddle中的jsbin,在尝试测试是否parent.location.host可访问时崩溃成错误.是否有一种可靠的方法来获取可用的东西,比如false告诉我们这是一个跨域的父级,而不是错误?
是否有一个try...catch变体,它将是强大的跨浏览器?或者可能是一些使用返回值的巧妙技巧parent.postMessage()?(虽然父页面无法编辑)
使用案例:想象嵌入在自己网站上的页面上的可嵌入内容,以及第三方.如果页面位于同域iframe上,我们会隐藏品牌并链接回原始网站,因为用户已在此处.如果他们从第三方iframe访问该页面或直接加载页面,我们会显示品牌和信用,以便他们可以看到内容的来源.
为了澄清,我知道相同的域策略,我不关心跨浏览器域是什么,我只是想写一个简单但可靠的if条件,如if( crossDomainParent() ){ /* do something */}
我有一个包含大量iframe的页面,其中包含大部分内容.用户通过在iframe中单击来与网站进行交互.我正在尝试构建的功能是:当用户离开我的网站时,我帮他们做了一个忙,然后从iframe中删除.
iframe有一个onload事件,每次加载新页面时都会触发该事件,跨域或不是.
<iframe id="testframe" src="http://mysite.com" onload="testframe_loaded()"></iframe>
Run Code Online (Sandbox Code Playgroud)
每次事件被触发时,我都在寻找一些方法:
A)检测用户何时导航到不同的域
B)吹出iframe.
我怀疑B是不可能的,因为浏览器不提供访问权限
document.getElementById("testframe").contentDocument.location.href
Run Code Online (Sandbox Code Playgroud)
当iframe是跨域的时候.我也不确定A是否可行.
如果有人有关于如何实现这一目标的想法,或者对于无法做到这一点是积极的,我会很感激这些建议.
谢谢