Chrome扩展程序内容脚本是否可以为html文件生成jQuery AJAX请求,该文件本身是Chrome扩展程序的一部分?

我正在处理Chrome扩展程序内容脚本 ,该脚本将在特定页面上向页面注入其他内容,以向现有网站添加function。

我的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:// gmjipglelhnlbakmlobgffnpceaalnnc”。

这听起来像Chrome扩展程序权限问题 ,相关权限似乎是[scheme]:[host]/*权限问题。 我的扩展ID是gmjipglelhnlbakmlobgffnpceaalnnc ,所以我尝试添加chrome-extension://gmjipglelhnlbakmlobgffnpceaalnnc/权限chrome-extension://gmjipglelhnlbakmlobgffnpceaalnnc/ ( 根据这是完全限定的Chrome Extension打包资源的前缀)。

这不起作用,因为Chrome告诉我权限’chrome-extension:// gmjipglelhnlbakmlobgffnpceaalnnc /’未知或URL模式格式错误

更多阅读,我发现有一个特定的设施,在这里描述扩展起源 ,以请求打包资源。 这一切都很好,但我更喜欢使用统一的API来请求资源,即能够使用jQuery来下载我的模板文件,就像我一直在为常规的“vanilla”web应用程序做的那样(即,不是Chrome扩展程序)。

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

找到我的答案。 您必须通过web_accessible_resources在清单中显式添加单个扩展资源或与您的扩展资源匹配的模式。

完成此操作后,您可以使用chrome.extension.getURL(resourcePath)构建URL。

这是我的清单的摘录:

 "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");