这不仅适用于 Google Chrome 扩展,也适用于 JavaScript
我正在编写一个 Chrome 扩展程序,其中当突出显示文本并显示上下文菜单时,我会在上下文菜单中显示我的项目,单击该项目时应处理所选文本。
打开上下文菜单并选择我的选项后,我得到了所有值为零和空的空对象。
因此,我想实现某种机制,一旦用户在选择文本后释放鼠标,就会缓冲文本选择,以便可以触发事件,如果有任何事件触发,我可以在全局变量中复制所选文本,并且可以稍后处理。
window.getSelected()
当我使用单独的测试代码进行测试时工作正常,但在使用我的扩展程序时,我调出上下文菜单,但无法获取实际选定的文本。
我在文档中看到的所选文本将是文本和 html。
请提出建议...
这里我粘贴了我正在做的事情。当我单击保存到单词提醒时,我得到一个空字符串:
这是其余的代码:
<script>
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
switch(request.message)
{
case 'getSelection':
sendResponse({data: window.getSelection().toString()});
break;
case 'createMenu':
seecon();
break;
default:
sendResponse({data: 'Invalid arguments'});
break;
}
});
function conOnClick(info,tab)
{
/*
chrome.extension.sendRequest(tab.id, {method: 'getSelection'}, function(response){
alert(response.data);
});
*/
}
//function seecon()
{
var contexts = ["selection"];
for (var i = 0; i < contexts.length; i++) {
var context = contexts[i];
var title = "Save to Word Reminder";
var id = chrome.contextMenus.create({"title": title, "contexts":[context],
"onclick": conOnClick});
}
}
</script>