2013-05-17 86 views
1

使用内容脚本,我打算在的页面插入一个用户界面,但我有一些担心。在页面内容中插入<iframe>可以吗?

  • 人们通常使用设置/扩展程序来阻止页面上的iframe s吗?
  • 如果我的分机的iframe被阻止,有没有办法让我检测到?
  • 在这种情况下避免使用iframe的其他原因?

该网站上也有类似的问题,但他们没有具体问我想知道什么。

[我想使用iframe的原因是:我的扩展程序必须独立于加载的网站(即在任何网页上)运行。它的内容脚本需要显示设置/帮助等的UI。目前它通过在页面的DOM中插入一个div来实现。然而,网页中的CSS会被应用到扩展的用户界面,这是一个难以解决的问题。使用似乎可以避免此问题。]

回答

0

正如您发现的那样,尝试将CS​​S滤除干扰时,如果无需声明设置每个已知样式属性,注入DOM时就非常困难。这是一个有据可查的问题和一些解决方案可以在下面的帖子中找到:

没有什么根本性的错误丢弃你的UI它变成一个。我不知道会阻止此行为的任何设置或扩展程序。

如果您的框架用户界面需要与父页面上的DOM或内容脚本进行交互,您可以使用Window.Parent。如果您从另一个域中拉入UI,您也可能需要考虑Same-Origin Policy

0

答案依次是:

  1. do not commonly use settings/extensions to block iFrames。恰恰相反;最大的抱怨是如何从ISP和浸出/包装站点等放置的iframe中获取内容。

  2. 是的,你可以检测你的iFrame是否被你的iFrame的JS发送了一个“我已经开始”信息。如果消息未被检测到,则假设最差。 :)

  3. 没有理由避免iFrames,除了他们是一个PITA的工作。如果您只需要“显示设置/帮助等的用户界面”,那么最好让您的分机打开the popup window types available to extensions之一。您可以完全控制HTML/CSS/JS,而不必担心页面的干扰。

相关问题