无法从 chrome 分机发送 http 请求
unable to send an http request from chrome extension
我正在尝试从 chrome 扩展创建手动 Google 搜索。 html 包含一个表单域。用户可以在此字段中输入一个数字。然后我将该数字添加到 url 参数中并基于该数字发起 GET 请求。
这是我的清单文件
{
"manifest_version": 2,
"name": "Qoogle",
"description": "Customized google search for your daily needs",
"version": "1.0",
"permissions": [
"tabs",
"http://www.google.co.in/",
"https://www.google.co.in/"
],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
这是我的 html,单击扩展按钮时会在新选项卡中打开。
<form action="" name="timer">
<input type="number" name="quantity" id="time">
<input type="radio" name="timertype" id="t1" value="seconds" checked>Seconds
<input type="radio" name="timertype" id="t2" value="minutes">Minutes
<br>
<input type="submit" id="timer" value="Set Timer">
*<b>Enter any positive number</b>
</form>
<script src="validate.js"></script>
最后这是我的 validate.js
//Method for new http request
function httpGet(theUrl)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false );0
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
// do stuff here
xmlHttp.send(null);
return xmlHttp.responseText;
};
}
}
//Funtion to validate and send timer request
function timer() {
var value = document.getElementById('time').value;
var url;
if(document.getElementById('t1').checked) {
url = "https://www.google.co.in/#q=set+timer+for+" + value + "+seconds";
httpGet(url)
}
else{
url = "https://www.google.co.in/#q=set+timer+for+" + value + "+minutes";
httpGet(url)
}
}
window.onload = function(){
document.getElementById('timer').onclick = timer;
};
这似乎不起作用。可能是什么原因?没有错误消息记录到控制台。
Google 不允许以编程方式访问。
XHR'ing 它毫无意义,不会工作。它还保护自己免受框架的影响,因此将其加载到 iframe 中也不起作用。
除非 Google 有一个 API 现在,如果不打开常规选项卡,您将无法执行此操作。还有 does not seem to be one.
如 Xan 所述,XHR 在我的问题中毫无意义。我对 JS 和 chrome 扩展还很陌生。
现在我找到了这个 api chrome.tabs.update。我只需要将 url 传递给 api。我删除了 XMLHttpRequest()。
我正在尝试从 chrome 扩展创建手动 Google 搜索。 html 包含一个表单域。用户可以在此字段中输入一个数字。然后我将该数字添加到 url 参数中并基于该数字发起 GET 请求。
这是我的清单文件
{
"manifest_version": 2,
"name": "Qoogle",
"description": "Customized google search for your daily needs",
"version": "1.0",
"permissions": [
"tabs",
"http://www.google.co.in/",
"https://www.google.co.in/"
],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
这是我的 html,单击扩展按钮时会在新选项卡中打开。
<form action="" name="timer">
<input type="number" name="quantity" id="time">
<input type="radio" name="timertype" id="t1" value="seconds" checked>Seconds
<input type="radio" name="timertype" id="t2" value="minutes">Minutes
<br>
<input type="submit" id="timer" value="Set Timer">
*<b>Enter any positive number</b>
</form>
<script src="validate.js"></script>
最后这是我的 validate.js
//Method for new http request
function httpGet(theUrl)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false );0
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
// do stuff here
xmlHttp.send(null);
return xmlHttp.responseText;
};
}
}
//Funtion to validate and send timer request
function timer() {
var value = document.getElementById('time').value;
var url;
if(document.getElementById('t1').checked) {
url = "https://www.google.co.in/#q=set+timer+for+" + value + "+seconds";
httpGet(url)
}
else{
url = "https://www.google.co.in/#q=set+timer+for+" + value + "+minutes";
httpGet(url)
}
}
window.onload = function(){
document.getElementById('timer').onclick = timer;
};
这似乎不起作用。可能是什么原因?没有错误消息记录到控制台。
Google 不允许以编程方式访问。
XHR'ing 它毫无意义,不会工作。它还保护自己免受框架的影响,因此将其加载到 iframe 中也不起作用。
除非 Google 有一个 API 现在,如果不打开常规选项卡,您将无法执行此操作。还有 does not seem to be one.
如 Xan 所述,XHR 在我的问题中毫无意义。我对 JS 和 chrome 扩展还很陌生。
现在我找到了这个 api chrome.tabs.update。我只需要将 url 传递给 api。我删除了 XMLHttpRequest()。