我正在开发Chrome扩展程序的“内容脚本”。如果页面加载在< FRAME>中,它必须激活一些javascript函数。但在< IFRAME>中没有。
我知道我可以通过
检查window.frameElement var inIFrame = (window.frameElement.tagName=='IFRAME')
但如果子框架与父框架不在同一个域中,则会失败。它会抛出跨域安全警告。子框架如何知道它在IFRAME或FRAME中而不违反安全策略?
答案 0 :(得分:1)
不,这是不可能确定的。子文档不能跨越其安全边界,如果域不同并且没有其他CORS权限,则其“可见世界”仅限于其自己的文档的范围,即其自己的窗口。没有办法超越它进入父文档的范围,并确定包含元素的类型。这样做会暴露整个对象及其属性,包括所有潜在的知识漏洞。