相关疑难解决方法(0)

检测此页面是否为跨域iframe的万无一失的方法

" 检测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 */}

html javascript iframe cross-browser

24
推荐指数
2
解决办法
2万
查看次数

检测iframe何时是跨域的,然后突破它

我有一个包含大量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是否可行.

如果有人有关于如何实现这一目标的想法,或者对于无法做到这一点是积极的,我会很感激这些建议.

谢谢

javascript security iframe cross-domain

12
推荐指数
1
解决办法
1万
查看次数