2014-10-04 68 views
2

我追加了一些脚本来使用Firefox插件SDK活动标签,内容的隐私政策拒绝追加脚本DOM

// main.js 
tabs.activeTab.attach({ 
    contentScriptFile: [data.url("js/loader.js") ] 
}); 

loader.js创建一个新的脚本根据URL和标题然后将counter.js等新脚本文件附加到正文中。执行加载程序工作正常,但网站的内容隐私政策拒绝附加counter.js。这里是错误:

Content Security Policy: The page's settings blocked the loading of a resource at http://example.com/counter.js ("default-src http://www.pinterest.com:80 https://*.pinterest.com:443 https://*.pinimg.com:443 http://*.pinterest.com:80 http://*.pinimg.com:80 http://*.google.com:80 http://connect.facebook.net:80 http://*.google-analytics.com:80 https://*.facebook.com:443 http://*.facebook.com:80 http://www.googleadservices.com:80 http://googleads.g.doubleclick.net:80 http://*.tiles.mapbox.com:80 http://*.4sqi.net:80 http://*.online-metrix.net:80 http://akwww.polyvorecdn.com:80 https://www.polyvore.com:443 'unsafe-inline' 'unsafe-eval'"). 

我以前做过这样的Chrome扩展,这是可能的。但问题是如何通过Firefx SDK插件追加脚本?
在此先感谢。

+0

也许火狐浏览器和谷歌浏览器不同地解释页面策略,Firefox认为“不意味着不”。 – Pointy 2014-10-04 13:20:14

+1

@Pointy也许,但我需要找到一种方式! – Reyraa 2014-10-04 13:26:36

+0

我们可以看到您如何附加脚本以及您尝试使用哪些网址? – willlma 2014-10-05 23:15:44

回答

2

如果您只想将脚本附加到具有特定URL的页面,则最好使用PageMod而不是附加到制表符。查看大部分代码并了解您打算如何为您提供最佳答案会很有帮助,但如果您不想查找某个PageMod,以下是一些不同的方案。

有两种方法可以解决这个问题。我会做的一个是简单地立即装两个脚本,像这样:

main.js

tabs.activeTab.attach({ 
    contentScriptFile: [data.url("js/loader.js"), data.url("js/counter.js") ] 
}); 

counter.js

var i = 0; 
function count() { 
    i++; 
} 

loader.js

if (titleIsValid() && urlIsValid()) { 
    count(); 
} 

因为你所有的文件都存储在本地,所以我不用担心将很多JS文件附加到很多页面上。你只需要构造你的count.js,这样就不会自动执行代码。


如果你真的要附加只有在这些条件适用JS文件,你可以这样做:

main.js

var worker = tabs.activeTab.attach({ 
    contentScriptFile: data.url("js/loader.js") 
}); 

worker.port.on('attachCounter', function() { 
    worker.tab.attach({ 
    contentScriptFile: (data.url("js/counter.js") 
    }); 
}); 

loader.js

if (titleIsValid() && urlIsValid()) { 
    self.port.emit('attachCounter'); 
} 

Read mor Ë约communicating between content scripts and main scripts from tab/attach


如果连接脚本的页面的原因是为了与网页脚本已经页面(和确切原因Firefox是告诉你它是不安全的)进行交互,然后阅读interacting with page scripts

+0

感谢亲爱的@willlma,我已经尝试过所有这些方法。但是因为我已经写了加载器和计数器脚本来作为书签工作,并且我不知道这个策略,所以我不能使用它们。我想我不会对这些脚本进行更改。 – Reyraa 2014-10-07 12:28:51