【问题标题】:How to use JavaScript to detect iframe?如何使用 JavaScript 检测 iframe?
【发布时间】:2017-08-08 06:59:46
【问题描述】:

我有一个 html 页面想要以两种不同的方式查看它:

1- 在 iframe 中查看时。 (查看完整的网站 html 代码)。

2- 在没有 iframe 的情况下查看。 (查看了部分代码)

我用过这个,但浏览器中没有任何东西出现,只是代码,但在 head /head 标签之间

<script>
if(top!=self){ 
write.line('Site full html code ');
}else{
write.line('modified site html code');
</script>

【问题讨论】:

  • 在浏览器中打开开发者工具。看看控制台。阅读那里的错误消息。

标签: javascript html iframe


【解决方案1】:

您可以访问window.parentwindow.top 变量,这意味着如果window.parent != window 它是一个iFrame。

【讨论】:

  • 这其实是top!=self,但是你不需要window.self,当它只是返回window时
  • 您误解了我的意思:您重写了已经可以工作的代码,而忽略了实际导致问题的代码。
【解决方案2】:

尝试使用类似的东西

var isIframe=((window.location != window.parent.location) ? true : false);

【讨论】:

  • 在我的情况下,即使它嵌入到具有不同跨域的另一个域中,它也可以正常工作。这就是我写 Try it 的原因 ;)
  • 啊,我忘了location 对正常的 SOP 规则有一些奇怪的例外。但这仍然不能解决问题。尽管有问题标题,但 OP 已经必须检测页面是否在框架中的代码工作正常。错误在于将内容输出到页面的代码中。
  • 确实不能解决他的代码,但有时紧凑的解决方案更适合未来的维护。
  • 那么你现在会改变你的投票还是你仍然坚持不赞成;)
  • 紧凑? top!=selfwindow.location != window.parent.location 紧凑得多!
【解决方案3】:

未捕获的引用错误:未定义写入

您检测框架的代码很好。错误在于您将内容写入页面的代码中。

在浏览器端的 JS 中没有 write.line 这样的东西。你好像把document.write弄混了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-02
    • 2010-10-15
    • 2010-10-29
    • 2012-07-04
    • 2016-11-07
    • 2013-04-28
    • 2023-03-05
    • 2015-10-05
    相关资源
    最近更新 更多