javascript - Chrome 扩展内容脚本是否可以对本身是 Chrome 扩展一部分的 html 文件发出 jQuery AJAX 请求?

标签 javascript jquery ajax google-chrome google-chrome-extension

我正在开发 Chrome 扩展 content script这将在特定页面上将其他内容注入(inject)页面,以向现有网站添加功能。

我的 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” header 。因此不允许访问来源“chrome-extension://gmjipglelhnlbakmlobgffnpceaalnnc”。

这听起来像 Chrome Extensions permissions issue ,相关权限好像是[scheme]:[host]/*权限问题。我的扩展 ID 是 gmjipglelhnlbakmlobgffnpceaalnnc,所以我尝试为 chrome-extension://gmjipglelhnlbakmlogffnpceaalnnc/ 添加权限(according to this 是完全合格的 Chrome 扩展打包资源的前缀) .

这没有用,因为 Chrome 告诉我权限“chrome-extension://gmjipglelhnlbakmlobgffnpceaalnnc/”未知或 URL 模式格式错误

多读一点,我发现有一个特定的设施,在 extension origin 下描述。 , 请求打包资源。这一切都很好,但我更愿意使用统一的 API 来请求资源,即能够使用 jQuery 来下拉我的模板文件,就像我一直在为常规的“ Vanilla ”网络应用程序所做的那样(即,不是 Chrome 扩展)。

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

最佳答案

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

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

这是我的 list 的摘录:

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

关于javascript - Chrome 扩展内容脚本是否可以对本身是 Chrome 扩展一部分的 html 文件发出 jQuery AJAX 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22315091/

相关文章:

ajax - Angular 2/4 如何向 http 帖子添加多个 header

javascript - 使用 ScrollMagic 同步 Sprite 和滚动

javascript - 与 ember js 一起使用时如何为 typeahead 指定预编译模板?

javascript - JQuery ("button").click 不起作用

jquery - 如何在移动设备中向上移动 Div,在桌面设备中向下移动

javascript - 我如何通过ajax解析html

javascript - Reactjs - 在动态元素渲染中将 ref 添加到输入

javascript - 使用 Perl Selenium::Remote::Driver for Javascript 稍后加载页面

jquery - document.body 在带有 jquery 的 IE 8 窗口中为 null

php - 如何使用 .ajax 提取 mysql 数据并用它填充表单