从选项页面调用 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/)打开它(可能是不小心)而不是打开它与扩展程序打包在一起的页面。
- 您需要将您的页面(例如,
options.html
)添加到您的扩展文件夹
- 您需要像
"options_page": "options.html"
或更好的那样将其添加到清单中 with options_ui
- 您需要重新加载扩展程序才能应用清单更改
- 您需要通过扩展程序打开它,例如通过
chrome://extensions
或扩展程序按钮的上下文菜单(如果有)
我为特定网站编写了 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/)打开它(可能是不小心)而不是打开它与扩展程序打包在一起的页面。
- 您需要将您的页面(例如,
options.html
)添加到您的扩展文件夹 - 您需要像
"options_page": "options.html"
或更好的那样将其添加到清单中 withoptions_ui
- 您需要重新加载扩展程序才能应用清单更改
- 您需要通过扩展程序打开它,例如通过
chrome://extensions
或扩展程序按钮的上下文菜单(如果有)