我有一个Chrome扩展,当用户单击浏览器操作按钮时,扩展
我现在拥有的是:
popup.html
<div class="v11container" id="v11container">Some Text</div>
<script src="http://b.v11media.com/js/client_api/api.js"> </script> //external api
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> //jquery
<script type="text/javascript">
v11onload(function() {
$.ajax({
url: 'http://localhost:3000/random',
success: function(data) {
console.log(data);
if(data){
var v11_api = new v11('v11container');
v11_api.show(data.click_url);
}
}
});
});
</script> //using the api to show an ad理想情况下,我希望广告显示时,我点击浏览器动作按钮。但现在所展示的只是“一些文字”。我的控制台没有显示任何错误。问题是来自于我引用外部JavaScript这一事实,还是因为我完全错过了什么?附带注意,我在一个普通的HTML页面上复制了这个API调用,并取得了很大的成功。所以我不认为api调用是问题所在。
另外,对于未来的功能,我希望广告是基于某些事件显示。因此,是否可以使用JavaScript或Chrome函数显示浏览器操作弹出,或者我是否必须以另一种方式进行此操作?
如果你需要更多的信息,请告诉我。
发布于 2014-04-02 22:54:20
再次检查您的控制台,其中一定有一些错误。注意:您必须检查负责popup.html (右键单击弹出窗口)的popup.html控制台,而不是负责选项卡内容的控制台(windows上的F12),当然也不检查负责后台页面的控制台(查看chrome>extensions页面中的视图)。
内容安全策略说:Inline JavaScript will not be executed。因此,您需要将代码移动到javascript文件(popup.js)中。
其次,不建议使用外部源代码,但如果坚持使用外部源代码,则必须在清单文件中处理content项:
"content_security_policy": "default-src 'self'; script-src 'self' https://code.jquery.com/jquery-1.11.0.min.js https://b.v11media.com/js/client_api/api.js",注意:在这个脚本-src白名单中,您只能使用https,而不能使用http。
发布于 2014-04-08 17:39:25
下面是我如何根据所提供的答案实现一个解决方案。谢谢你的帮助。
popup.js:
(function() {
var v11 = document.createElement('script');
v11.type = 'text/javascript';
v11.async = true;
v11.src = 'https://b.v11media.com/js/client_api/api.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(v11, s);
})();
v11onload(function() {
$.ajax({
url: 'http://localhost:3000/random',
success: function(data) {
console.log(data);
if (data) {
var v11_api = new v11('v11container');
v11_api.show(data.click_url);
}
}
});
});manifest.json:
清单中所要求的只是Skalár Wag在上面的答复中所述的内容。
https://stackoverflow.com/questions/22796928
复制相似问题