1

如果我在上下文菜单中增加了一个项目:我可以在Chrome扩展中找到具有选定文本的标签吗?

chrome.contextMenus.create({ 
"title" : chrome.i18n.getMessage("right_click") , 
"type" : "normal", 
"contexts" : ["selection"], 
"onclick" : my_function() // returns a callback function 
}); 

我怎样才能获得与所选择的内容标签。 (选择是其innerHTML我想的一部分)

编辑: my_function是一个工厂函数:返回一个事件处理程序。

回答

2

您可以注入内容脚本并从脚本中提出选择。

content.js:

function getSel() { 
    //get text 
    var sel = window.getSelection().toString(); 
    //or get parent tag for selection 
    //var sel = window.getSelection().getRangeAt(0).commonAncestorContainer; 
    if (sel) { 
    chrome.extension.sendRequest({ 
     msg: 'data', 
     sel: sel 
    }); 
    }; 
}; 

background.js:

var selText; 

function onClickFunction(info, tab) { 
    chrome.tabs.executeScript(
    tab.id, 
    {code: 'getSel()', allFrames: true}, 
    function() { 
     //do anything with selText 
    } 
); 
}; 

chrome.extension.onRequest.addListener(function (request, sender, response) { 
    if (request.msg == 'data') { 
    selText = request.sel; 
    }; 
}; 
相关问题