2011-11-17 42 views
7

我在我的Chrome扩展中加载了一个网站的iframe,我想注入CSS和JavaScript到网站,但只有当它加载到我的网站扩展iframe(所以当用户正常浏览网站时不会受到影响)。我怎样才能注入CSS和JavaScript到加载在铬扩展中的iframe

我感到惊讶的是,当Chrome扩展程序尝试访问iframe的内部结构时,即使它们可以进行跨域XHR请求,它们也会应用跨域安全策略。

是否有一个简单的方法来做到这一点?我虽然可以使用executeScript来完成,但它需要一个选项卡ID。

回答

2

唯一的方法来知道,如果你是在一个炎热的是window是不是top

if (window == top) { 
    // Not in iframe 
} 
else { 
    // In an iframe 
} 

您只能对内容脚本执行此操作,而不能对样式表执行此操作。我通常做的是在内容脚本中,我检查它是否不在顶部窗口中,然后继续脚本,否则我就结束它。

重温

  1. 注入的内容脚本为URL
  2. 在内容脚本,检查窗口属性,if (window != top) { loadContentScript() }
  3. 在JavaScript创建CSS,如果你太担心它影响。如果你使用独特的ID,你不应该这样做。

希望有所帮助,我为此做了几次延期。