jQuery在chrome扩展后台页面中的使用

目标

我正试图使用这个样板代码,通过在线字典API查找所选单词并返回定义

问题

我已经分别测试了实际的jqueryajax调用,效果很好。此外,我可以在页面上获取所选单词。然而,由于某些原因,在Sample.js中的样板代码中调用ajax函数时,实际上遇到了问题

需要建议

background.html

<html>
<脚本src=”https://stackoverflow.com/questions/13320200/jquery.js“/>
<脚本src=”https://stackoverflow.com/questions/13320200/sample.js“/>
<车身>
<p>
图片如下:
&lt/p>
<img id=“target”src=”https://stackoverflow.com/questions/13320200/white.png“width=“640”height=“480”>
&lt/车身>
&lt/html>

Manifest.json

{
“名称”:“上下文菜单示例”,
“说明”:“显示上下文菜单API的一些功能”,
“版本”:“0.6”,
“权限”:[“上下文菜单”],
“背景”:{
“脚本”:[“sample.js”],
“页面”:[“background.html”]
},
“清单版本”:2
}

Sample.js

//一个通用的onclick回调函数。
函数常规单击(信息,选项卡){
console.log(“单击项目“+info.menuItemId+”);
log(“info:+JSON.stringify(info));
log(“tab:+JSON.stringify(tab));
警报(信息选择文本);
显示文本(信息选择文本);
console.log(“asfasdf”);
$(“#testID”,document).html(“测试jQuery”);
$.ajax({
url:“http://api.wordnik.com//v4/word.json/cat/definitions?api_key=mykey&includeRelated=false&includeTags=false&limit=1“,
数据类型:“json”,
成功:功能(数据){
//成功时调用
警报(数据[0]。word);
},
错误:函数(e){
//发生错误时调用
控制台日志(e.message);
}
});
}
//为每个上下文类型创建一个测试项。
var context=[“页面”、“选择”、“链接”、“可编辑”、“图像”、“视频”,
“音频”];
对于(var i=0;i<contexts.length;i++){
var context=context[i];
var title=“测试”+“上下文”+“菜单项”;
var id=chrome.contextMenus.create({“title”:title,“context”:[context],
“onclick”:genericOnClick});
console.log(“”+context+“”项:“+id”);
}
//创建一个父项和两个子项。
var parent=chrome.contextMenus.create({“title”:“Test parent item”});
var child1=chrome.contextMenus.create(
{“title”:“Child 1”,“parentId”:parent,“onclick”:genericOnClick});
var child2=chrome.contextMenus.create(
{“title”:“Child 2”,“parentId”:parent,“onclick”:genericOnClick});
console.log(“父项:+parent+”child1:+child1+”child2:+child2”);
//创建一些无线电项目。
函数radioOnClick(信息,选项卡){
console.log(“无线电项目”+info.menuItemId+
“已单击(以前的选中状态为”+
info.wasChecked+”);
}
var radio1=chrome.contextMenus.create({“title”:“Radio 1”,“type”:“Radio”,
“onclick”:radioOnClick});
var radio2=chrome.contextMenus.create({“title”:“Radio 2”,“type”:“Radio”,
“onclick”:radioOnClick});
控制台日志(“radio1:+radio1+”radio2:+radio2);
//创建一些复选框项目。
函数checkboxOnClick(信息,选项卡){
log(JSON.stringify(info));
console.log(“复选框项”+info.menuItemId+
已单击,状态现在为:“+info.checked”+
“(以前的状态为“+info.wasChecked+”);
}
var checkbox1=chrome.contextMenus.create(
{“title”:“Checkbox1”,“type”:“checkbox”,“onclick”:checkboxOnClick});
var checkbox2=chrome.contextMenus.create(
{“title”:“Checkbox2”,“type”:“checkbox”,“onclick”:checkboxOnClick});
日志(“checkbox1:+checkbox1+”checkbox2:+checkbox2”);
//故意创建一个无效项,以显示
//创建回调函数。
log(“即将尝试创建无效项-关于的错误”+
“999项应显示”);
create({“title”:“Oops”,“parentId”:999},function(){
if(chrome.extension.lastError){
log(“获得预期错误:+chrome.extension.lastError.message”);
}
});

您必须将在ajax函数中调用的url的权限添加到清单中:

“权限”:[
“上下文菜单”,
“http://api.wordnik.com/*”
],

不要忘记包括jquery:

“背景”:{“脚本”:[“jquery.js”,“sample.js”],“页面”:[“background.html”]}

而且您不需要<脚本src=”https://stackoverflow.com/questions/13320200/jquery.js“/&gt在您的文件中

该网站的链接应该有/*在它的结尾

发表评论