微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Google Chrome浏览器中将所选文本正确捕获到变量中?

如何解决如何在Google Chrome浏览器中将所选文本正确捕获到变量中?

| 我正在尝试创建我的第一个Chrome扩展程序-右键单击google搜索选项的副本。 这就是我到目前为止
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
});
问题在于未捕获所选文本,并且对任何所选文本执行的查询为“ 1”。 我在这里做错了什么?为什么
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\",\"onclick\": searchGoogle
});
但它搜索
http://www.google.com/search?q=undefined
我做错了什么?     

解决方法

请参阅有关OnClickData对象的Google参考。当您单击上下文菜单项时,它将把其中一个作为第一个参数发送到指定的函数。因此,首先,您可能想添加一个变量来保存它。有了该变量(此处为
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开发人员指南》。通常,对于所有自定义“ 9” API可用的方法,返回的值等,您通常都需要它。 而且,您的背景脚本中会呼叫
window.getSelection().getString()
,对吧?它确实可以工作,但是可以通过返回您在背景页面上选择的任何文本来工作。由于您通常无法与扩展程序的背景页面进行交互,因此该字符串可能为空。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。