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中。