代码之家  ›  专栏  ›  技术社区  ›  Ole Albers

从选项页面调用Chrome扩展方法?

  •  0
  • Ole Albers  · 技术社区  · 11 年前

    我为一个特定的网站写了一个chrome扩展。如果安装了扩展,并且我导航到该站点“example.com”,我的扩展将调用以下方法:

     var search="john";
     $.get("https://www.example.com/complete/search?q="+search, function (data) {
            console.log(data);
        });
    

    这很好。

    现在我必须从该扩展的选项页中调用相同的方法。当我这样做时,我会收到以下错误:

    XMLHttpRequest无法加载 https://www.example.com/complete/search?q=John 不 请求的上存在“Access Control Allow Origin”标头 资源原点' http://localhost 因此不允许访问。

    我明白为什么会发生这种情况,但必须找到解决办法。我的想法是触发扩展脚本来调用方法,然后将结果返回到选项页。我想,chrome.runtime.sendMessage()在这里没有帮助。

    不用说:该域不是由我托管的,所以我不能只更改标头。

    1 回复  |  直到 11 年前
        1
  •  1
  •   Xan    11 年前

    错误表明它 不是实际的 选项页:您正在通过本地Web服务器(源: http://localhost/ )而不是打开带有扩展名的页面。

    1. 您需要添加页面(例如, options.html )到扩展名的文件夹
    2. 您需要将其添加到清单中,如 "options_page": "options.html" 或者更好 with options_ui
    3. 您需要重新加载扩展以应用清单更改
    4. 您需要通过扩展打开它,例如通过 chrome://extensions 或扩展名按钮的上下文菜单(如果有)