从选项页面调用 Chrome-Extension 方法?

Call Chrome-Extension Method from within options page?

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

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

效果很好。

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

XMLHttpRequest cannot load https://www.example.com/complete/search?q=John. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.

我明白为什么会这样,但必须想办法解决这个问题。我的想法是触发 Extension-Script 调用该方法,然后 return 结果到选项页面。我预计 chrome.runtime.sendMessage() 在这里没有帮助。

不用说:那个域名不是我托管的,所以我不能只更改 header。

错误表明它不是实际的选项页面:您是通过本地网络服务器(来源:http://localhost/)打开它(可能是不小心)而不是打开它与扩展程序打包在一起的页面。

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