在Javascript中检测iFrame嵌入

Che*_*oft 54 javascript iframe greasemonkey

我有一个具有特定页面的应用程序 - 让我们称之为页面A.页面A有时是顶级页面,但有时也会嵌入到页面B中的iframe中.所有页面都来自同一台服务器而且没有跨域问题.

我有一个在页面A上运行的greasemonkey脚本.illipmonkey脚本如何检测页面A是否在iframe上下文中?

ann*_*ata 126

如果页面A本身具有帧(我知道这可能不是这个特定实例的情况),那么查看帧长度通常会中断.更可靠和有意义的测试将是:

if (window!=window.top) { /* I'm in a frame! */ }
Run Code Online (Sandbox Code Playgroud)

  • 是的,完全如此 - .top和.parent可以指向与.self相同的对象(事实上,测试window.self!= window.top可能更清晰) (6认同)

Art*_*ger 11

谓词

(window.parent.frames.length > 0)
Run Code Online (Sandbox Code Playgroud)

会告诉你你想要什么.

  • 如果您在运行此检查的页面上嵌套另一个iframe,则此方法会给您误报. (3认同)