【问题标题】:unable to send an http request from chrome extension无法从 chrome 扩展发送 http 请求
【发布时间】:2015-07-24 09:39:14
【问题描述】:

我正在尝试从 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;
};

这似乎不起作用。可能是什么原因?控制台不会记录任何错误消息。

【问题讨论】:

  • “似乎无法正常工作”并不是对问题的充分描述。

标签: javascript google-chrome google-chrome-extension xmlhttprequest


【解决方案1】:

Google 不允许以编程方式访问。

XHR'ing 这是没有意义的,不会工作。它还可以保护自己免受框架的影响,因此将其加载到 iframe 中也不起作用。

除非有适用于 Google Now 的 API,否则您无法在不打开常规标签的情况下执行此操作。还有does not seem to be one

【讨论】:

    【解决方案2】:

    正如Xan 提到的,XHR'ing 在我的问题中毫无意义。我对 JS 和 chrome 扩展还很陌生。

    现在我找到了这个 API chrome.tabs.update。我只需要将 url 传递给该 api。我删除了 XMLHttpRequest()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-26
      • 2016-09-26
      • 1970-01-01
      • 2013-05-30
      • 2012-06-20
      • 1970-01-01
      相关资源
      最近更新 更多