我可以在Chrome扩展程序中找到包含所选文本的标记吗?

时间:2012-02-13 10:12:16

标签: javascript google-chrome text google-chrome-extension textselection

如果我在上下文菜单中添加了一个项目:

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

如何获取包含所选内容的标记。 (选择是innerHTML我猜的一部分)

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

1 个答案:

答案 0 :(得分: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;
  };
};