Chrome:未捕获的ReferenceError jQuery未定义

我正在尝试构建chrome扩展。 它需要用户名的背景图片url并将其放入页面。 但它给出了意外的错误。 错误文本是:

https://twitter.com/jack上的页面运行了来自http://api.twitter.com/1/users/show.json?screen_name=jack&callback=jQuery18207089675806928426_1351333462593&_=1351333462594的不安全内容。

未捕获的ReferenceError:jQuery18207089675806928426_1351333462593未定义(匿名函数)

错误信息

扩展文件夹包含以下文件:

action.js // background.html // jquery.min.js // manifest.json

夹

action.js:

var userPage = document.URL; var arr = userPage.split("/"); var username = ""; for(i=3;i<4;i++) username += arr[i]; var page = "http://api.twitter.com/1/users/show.json?screen_name="+username+"&callback=?"; background(); function background() { $.getJSON(page, function(data) { $("span.screen-name").append(" • B • "); }); } 

background.html:

        

jquery.min.js取自http://code.jquery.com/jquery-1.8.2.min.js

manifest.json的:

 { "name": "Twitter Background", "version": "1.0", "background_page": "background.html", "description": "Puts the background image url to the profile page.", "content_scripts": [ { "matches": ["http://twitter.com/*","https://twitter.com/*"], "js": ["jquery.min.js","action.js"], "all_frames":true } ] } 

第一个错误(“https的页面:…从http:// …运行不安全的内容”)只是一个警告,而且非关键。

第二个错误是由执行上下文的差异引起的。 请参阅Chrome扩展程序代码与内容脚本与已注入脚本 。 通过查看第一个警告可以看到,发出了JSONP请求。 这意味着在页面中注入了元素。 这个脚本调用了一个无法找到的函数( jQuery182.... ),因为jQuery是在内容脚本的上下文中加载的。

要解决此问题,请在页面中注入 action.js ,或者(推荐)将https://api.twitter.com/*添加到清单文件的权限部分,并且不要使用?callback=? 在您传递给$.getJSON的URL中。