我正在开发一个简单的chrome扩展程序 - 类似于个人字典,它会突出显示网页上的特定单词 - 但我想将单词列表存储在外部服务器上,因此我可以随时更新它。我希望它与脚本分开,这样我就可以只给出一个单词列表供有人更新,而且它们不会弄乱脚本本身
现在我在外部服务器上尝试使用简单的data.js:
infoTextD = [ 'car', 'cat', 'dog' ];
content.js看起来像这样:
$.ajax({
url: 'https://cdn.rawgit.com/Curiosit/Curiosit/master/data.js',
crossDomain: true,
dataType: "script",
success: function () {
var d = infoTextD;
},
error: function () {
// handle errors
}
});
这会在控制台中产生错误:未定义infoTextD。我明白这个ajax include不会将变量传递给主脚本?
如何将外部服务器的变量数组加载到chrome扩展名呢?
PS。 我的清单:
{
"manifest_version": 2,
"name": "a",
"description": "a ",
"version": "0.1",
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": [
"jquery-2.2.0.js",
"content.js"
],
"run_at": "document_end"
}
],
"background": {
"page": "popup.html"
},
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"activeTab",
"http://*/",
"https://*/"
]
}
答案 0 :(得分:0)
两件事:
您应该将外部数据作为json提供(例如:['car', 'cat', 'dog']
,而不是infoTextD = ...
)
然后,您可以从成功回调
例如:
$.ajax({
url: 'https://cdn.rawgit.com/Curiosit/Curiosit/master/data.json',
crossDomain: true,
success: function (infoTextD) {
console.log(infoTextD);
},
error: function () {
// handle errors
}
});