gpt4 book ai didi

javascript - 如何将选定的文本正确捕获到 Google Chrome 中的变量中?

转载 作者:行者123 更新时间:2023-11-29 10:23:46 26 4
gpt4 key购买 nike

我正在尝试创建我的第一个 Chrome 扩展程序 - 右键单击​​谷歌搜索选项的副本。

这是我目前的情况

function searchGoogle() {
var selectedText = window.getSelection().toString();
var serviceCall = 'http://www.google.com/search?q=' + selectedText;
chrome.tabs.create({url: serviceCall});
}

chrome.contextMenus.create({
"title": "mySearch",
"contexts":["selection"],
"onclick": searchGoogle
});

问题是未捕获所选文本,对任何所选文本执行的查询是 http://www.google.com/search?q=

我在这里做错了什么?为什么 window.getSelection().toString() 不起作用?


根据布莱恩的建议,我尝试了这个

var query;
function getText(ocd) {
query = ocd.selectionText;
}

function searchGoogle() {
var serviceCall = 'http://www.google.com/search?q=' + query;
chrome.tabs.create({url: serviceCall});
}

chrome.contextMenus.create({
"title": "mySearch",
"contexts":["selection"],
"onclick": searchGoogle
});

但它会搜索 http://www.google.com/search?q=undefined

我做错了什么?

最佳答案

参见 Google's reference on the OnClickData目的。当您单击上下文菜单项时,它会将其中一个作为第一个参数发送给指定的函数。所以,首先,您可能想添加一个变量来保存它。一旦您拥有该变量(此处为 ocd),您就可以使用 ocd.* 访问 Google 列出的属性。在这种情况下,我们需要 ocd.selectionText

很可能,您需要进行以下更改:

// Handle click event and store OnClickData object in first argument
function searchGoogle(ocd) {
var serviceCall = 'http://www.google.com/search?q=' + ocd.selectionText;
chrome.tabs.create({url: serviceCall});
}

chrome.contextMenus.create({
"title": "mySearch %s", // display "MySearch [selected text]" in menu
"contexts":["selection"],
"onclick": searchGoogle // pass an OnClickData object to searchGoogle on click
});

由于您刚刚起步,我强烈建议您查看 Google's Developer's Guide .对于所有自定义 chrome.* API,它通常包含您需要的可用方法、它们返回的值等。

另外,window.getSelection().getString() 是从您的后台脚本调用的,对吗?它实际上确实 起作用,但它通过返回您在背景页面上选择的任何文本 来起作用。由于您通常无法与扩展程序的后台页面进行交互,因此这可能是一个空字符串。

关于javascript - 如何将选定的文本正确捕获到 Google Chrome 中的变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6144669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com