我正在尝试编写Google Chrome扩展程序,以便我可以突出显示在任何网站上的文字,并在其他网站上执行GET查询搜索。它将在新选项卡中打开查询。
例如,如果我突出显示“google chrome”文本并右键单击以激活Chrome扩展程序,则会在新标签页中打开http://example.com/index.php?q=google%20chrome。
这样做最好的方法是什么?
答案 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()
进行选择。