我正在开发一个扩展程序,在浏览器操作弹出窗口中,我希望有两个选项卡供选择。我读到你需要为我想做的任何类型的js单独的js文件。当我定期运行html页面(不在扩展名内)时,我的js工作正常,一切都相应地起作用,但不在扩展弹出窗口中。这是my html文件的顶部,我链接外部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的问题。我没有&#34;拒绝加载脚本&#34;等。
答案 0 :(得分:1)
我不确定,但您的内容安全政策可能存在问题。见https://developer.chrome.com/extensions/contentSecurityPolicy#resourceLoading
脚本和对象资源只能从扩展名中加载 包裹,而不是来自网络。这可以确保您的扩展 只执行你特别批准的代码,防止 主动网络攻击者恶意重定向您的请求 资源。
而不是编写依赖于jQuery(或任何其他库)的代码 从外部CDN加载,请考虑包括特定版本 您的扩展程序包中的jQuery。