Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 将表单数据发布到网站的Chrome Omnibox扩展?_Search_Post_Google Chrome Extension - Fatal编程技术网

Search 将表单数据发布到网站的Chrome Omnibox扩展?

Search 将表单数据发布到网站的Chrome Omnibox扩展?,search,post,google-chrome-extension,Search,Post,Google Chrome Extension,Omnibox扩展如何创建表单数据并将其发布到网站,然后显示结果 下面是我想做的一个例子。当您在Omnibox中键入lookup bieber时,我希望我的扩展能够发布如下所示的表单数据 searchtype: all searchterm: bieber searchcount: 20 到URLhttp://lookup.com/search 这样浏览器就可以加载http://lookup.com/search显示搜索结果 如果我可以在GET中发送数据,这将是微不足道的,但是lookup.c

Omnibox扩展如何创建表单数据并将其发布到网站,然后显示结果

下面是我想做的一个例子。当您在Omnibox中键入
lookup bieber
时,我希望我的扩展能够发布如下所示的表单数据

searchtype: all
searchterm: bieber
searchcount: 20
到URL
http://lookup.com/search

这样浏览器就可以加载
http://lookup.com/search
显示搜索结果

如果我可以在GET中发送数据,这将是微不足道的,但是lookup.com需要HTTP POST。我能想到的唯一方法是在当前页面中插入一个表单,然后提交它,但是(a)只有在有当前页面的情况下才有效,(b)它似乎无论如何都不起作用(可能需要设置权限)


在走这条路之前,我想至少有人以前试过这么做。有吗?

您可以通过使用omnibox api来实现这一点:

chrome.omnibox.onInputChanged.addListener(
  function(text, suggest) {
    doYourLogic...
  });
一旦您因键入的某个关键字而激活了分机,您可以调用如下内容:

var q = the params you wish to pass
var url = "http://yourSite.com";

var req = new XMLHttpRequest();
req.open("POST", url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 req.onreadystatechange = function() {
  if (req.readyState == 4) {
    callback(req.responseXML);
  }
}
req.send(q);

谢谢你的回答,但它遗漏了关键的最后一步。在回调中,我希望在浏览器中实际显示搜索结果页面。也许我可以创建一个新选项卡,将HTML注入其中,并使用history API将URL设置为?这似乎有点曲折,如果不是不可能的话。