2013-05-17 41 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,而不必擔心頁面的干擾。

相關問題