2014-09-03 52 views
1

我正在浏览器动作弹出窗口中的扩展名,我希望有两个选项卡供选择。我读过,你需要为你想要做的任何一种js都有一个单独的js文件,我就是这么做的。当我定期运行html页面(不在扩展名内部)时,我的js工作正常,并且所有功能都相应地运行,但不在扩展名弹出窗口中。这里是顶部ofmy HTML文件,其中i连接外部JS文件铬浏览器动作中的选项卡

<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.5.0/pure-min.css"> 
    <link rel="stylesheet" type="text/css" href="tab.css" /> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script type="text/javascript" src="tab.js"></script> 
    <style> 
    body { 
     min-width: 250px; 
     overflow-x: hidden; 
    } 
    </style> 

,这里是JS文件(即再正常工作,而不是内部的浏览器操作的)

jQuery(document).ready(function() { 
    jQuery('.tabs .tab-links a').on('click', function(e) { 
     var currentAttrValue = jQuery(this).attr('href'); 

     // Show/Hide Tabs 
     jQuery('.tabs ' + currentAttrValue).siblings().slideUp(400); 
     jQuery('.tabs ' + currentAttrValue).delay(400).slideDown(400); 

     // Change/remove current tab to active 
     jQuery(this).parent('li').addClass('active').siblings().removeClass('active'); 

     e.preventDefault(); 
    }); 
}); 

我有从来没有真正处理扩展之前,所以我不确定这种js/jquery是否甚至允许在浏览器动作弹出窗口内。在此先感谢

编辑这不是CSP afaik的问题。我没有“拒绝加载脚本”等。

+0

使用jQuery,你真的应该只包含扩展名的文件。 – Xan 2014-09-03 14:55:07

+0

Yepp就是这个问题。下载整个jquery文件并将其链接到本地​​。 – erp 2014-09-03 18:03:08

回答

1

我不确定,但看起来您的内容安全策略可能存在问题。请参阅https://developer.chrome.com/extensions/contentSecurityPolicy#resourceLoading

脚本和对象资源只能从分机的 程序包加载,而不能从网络中加载。这可确保您的分机 仅执行您特别批准的代码,从而防止 活动网络攻击者恶意重定向您的请求以获取资源。

不要编写依赖于jQuery(或任何其他库)的代码 从外部CDN加载,请考虑在您的扩展包中包含jQuery的特定版本 。

+0

我已经阅读了一遍又一遍,我正在应用安全策略afaik。最初我遇到了一个拒绝加载脚本的错误,但后来我修复了这个错误,现在上传时没有错误。但jq/js仍然不会执行我所要求的功能。 – erp 2014-09-03 17:41:23

+0

没有CSP的问题(也许还挺)刚刚从'http:// ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'下载了jquery文件,并将本地文件。 Mucho gracias! – erp 2014-09-03 18:02:24

+0

@erp这完全是一个CSP问题。 [Chrome扩展程序CSP](https://developer.chrome.com/extensions/contentSecurityPolicy#relaxing-remote-script)需要明确的白名单,并且只允许https来源。 – Xan 2014-09-03 18:05:29

相关问题