Chrome 扩展内容脚本能否对本身属于 Chrome 扩展的一部分的 html 文件发出 jQuery AJAX 请求?

2024-04-10

我正在开发 Chrome 扩展程序内容脚本 https://developer.chrome.com/extensions/content_scripts这将在特定页面上向页面注入附加内容,以向现有站点添加功能。

我的 Chrome 扩展程序中有一个 HTML 文件,其中包含将添加的内容的模板。我希望我可以使用 jQuery 来检索该 HTML 模板。我最初尝试了一个简单的 jQuery AJAX 请求,如下所示:

var url = "template.html";

$.get(url,function(data, textStatus, jqXHR){
    console.log("Got the template!");
    console.log(data);
},"html");

但是,这会导致以下错误:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“chrome-extension://gmjipglhnlbakmlobgffnpceaalnnc”。

这听起来像是一个Chrome扩展程序权限问题 https://developer.chrome.com/extensions/declare_permissions,相关许可似乎是[scheme]:[host]/*权限问题。我的分机 ID 是gmjipglelhnlbakmlobgffnpceaalnnc,所以我尝试添加权限chrome-extension://gmjipglelhnlbakmlobgffnpceaalnnc/ (which 根据这个 https://developer.chrome.com/extensions/overview#relative-urls是完全限定的 Chrome 扩展程序打包资源的前缀)。

正如 Chrome 告诉我的那样,这不起作用权限“chrome-extension://gmjipglhnlbakmlobgffnpceaalnnc/”未知或 URL 模式格式错误.

多读一点,我发现有一个特定的设施,如下所述延伸原点 https://developer.chrome.com/extensions/xhr,请求打包资源。这一切都很好,但我更喜欢使用统一的 API 来请求资源,即能够使用 jQuery 下拉我的模板文件,就像我对常规“普通”Web 应用程序所做的那样(即,不是 Chrome 扩展)。

有没有办法配置我的 Chrome 扩展程序权限,以便我可以通过 jQuery 的 AJAX 设施请求“扩展源”资源?


找到了我的答案。您必须通过以下方式在清单中显式添加单个扩展资源或与您的扩展资源匹配的模式web_accessible_resources http://developer.chrome.com/extensions/manifest/web_accessible_resources.

完成此操作后,您可以使用以下命令构建 URLchrome.extension.getURL(resourcePath) http://developer.chrome.com/extensions/extension.html#method-getURL.

这是我的清单的摘录:

"web_accessible_resources" : [
    "*.html"
]

这是我用来请求模板文件的代码:

var url = chrome.extension.getURL("template.html");
$.get(url,function(data, textStatus, jqXHR){
    console.log("Got the template!");
    console.log(data);
},"html");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome 扩展内容脚本能否对本身属于 Chrome 扩展的一部分的 html 文件发出 jQuery AJAX 请求? 的相关文章

随机推荐