将外部数据加载到chrome扩展的最简单方法是什么?

时间:2016-02-14 09:55:53

标签: javascript jquery google-chrome google-chrome-extension

我正在开发一个简单的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://*/"

               ]

            }

1 个答案:

答案 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
    }
});