为GET查询编写Google Chrome扩展程序

时间:2010-03-13 22:08:00

标签: google-chrome

我正在尝试编写Google Chrome扩展程序,以便我可以突出显示在任何网站上的文字,并在其他网站上执行GET查询搜索。它将在新选项卡中打开查询。

例如,如果我突出显示“google chrome”文本并右键单击以激活Chrome扩展程序,则会在新标签页中打开http://example.com/index.php?q=google%20chrome

这样做最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

要从您访问的标签中获取所选文字,您需要使用Extension Messaging来执行此操作。

例如,让我们做一个简单的Google搜索扩展程序,在您的内容脚本中,您可以使用以下内容:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    if (request.method == "getSelection")
      sendResponse({data: window.getSelection().toString()});
    else
      sendResponse({}); // snub them.
});

现在假设您希望在browser action内点击background page时发生这种情况,您需要侦听onclick事件。

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.sendRequest(tab.id, {method: "getSelection"}, function(response) {
    var selectedText = response.data;
    chrome.tabs.create({url: 'http://google.com?q=' + selectedText});
  });
});

您会注意到,一旦您点击图标(浏览器操作),它就会向内容脚本发送请求,一旦内容脚本收到该操作,它就会将所选文本作为其有效负载发回。然后,您可以根据所选内容打开一个标签,以搜索结果。

答案 1 :(得分:1)

如果您只想打开新标签页,可以将chrome.tabs.create()与URL参数一起使用。要获取所选文本,请捕获mouseup事件并使用window.getSelection()进行选择。