Search 将表单数据发布到网站的Chrome Omnibox扩展?
Omnibox扩展如何创建表单数据并将其发布到网站,然后显示结果 下面是我想做的一个例子。当您在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
lookup bieber
时,我希望我的扩展能够发布如下所示的表单数据
searchtype: all
searchterm: bieber
searchcount: 20
到URLhttp://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设置为?这似乎有点曲折,如果不是不可能的话。