首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹出显示浏览器操作中的外部内容。

弹出显示浏览器操作中的外部内容。
EN

Stack Overflow用户
提问于 2014-04-01 21:09:01
回答 2查看 611关注 0票数 0

我有一个Chrome扩展,当用户单击浏览器操作按钮时,扩展

  1. 打开弹出窗口
  2. 调用外部API以显示广告

我现在拥有的是:

popup.html

代码语言:javascript
复制
    <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函数显示浏览器操作弹出,或者我是否必须以另一种方式进行此操作?

如果你需要更多的信息,请告诉我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-02 22:54:20

再次检查您的控制台,其中一定有一些错误。注意:您必须检查负责popup.html (右键单击弹出窗口)的popup.html控制台,而不是负责选项卡内容的控制台(windows上的F12),当然也不检查负责后台页面的控制台(查看chrome>extensions页面中的视图)。

内容安全策略说:Inline JavaScript will not be executed。因此,您需要将代码移动到javascript文件(popup.js)中。

其次,不建议使用外部源代码,但如果坚持使用外部源代码,则必须在清单文件中处理content项:

代码语言:javascript
复制
"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。

票数 2
EN

Stack Overflow用户

发布于 2014-04-08 17:39:25

下面是我如何根据所提供的答案实现一个解决方案。谢谢你的帮助。

popup.js:

代码语言:javascript
复制
(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在上面的答复中所述的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22796928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档