我正在开发一个需要跨域 XHR 的 chrome 扩展。所以我需要向服务器发出获取请求并从中获取一些文本。我目前正在从我的计算机加载解压后的扩展。该脚本似乎不起作用。
这是我的manifest.json
:
{
"name": "My extension",
"version": "1.1",
"manifest_version": 2,
"description": "Testing http requests",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"http://*/"
]
}
这是执行获取请求的脚本(来自本教程):
function showresponse(){
var query = document.getElementById("query").value;
var url = "http://blah.com/search.php?term="+query;
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
console.log("hello world");
document.getElementById("container").innerHTML = xhr.responseText;
}
}
xhr.send(null);
}
id 等是根据我的popup.html
文件设置的,并且设置正确,它包括这个包含showresponse()
函数定义的 js 文件。
myextension.crx
我还尝试在阅读此问题后打包我的扩展程序以获取文件,并尝试在浏览器中打开该文件,但出于安全原因,chrome 不允许从本地主机或未知服务器安装扩展程序。
我的问题是如何在 chrome 扩展中创建跨域 XHR?
此外,从 get 请求到服务器的响应实际上是一个 html 文档,我需要从返回的 html 标记中过滤一些文本。当我对 php 脚本进行查询时,如果我在 javascript 中发出 get 请求,我可以接收并因此使用 html 输出吗?
我该如何实现这一目标?