У меня была очень большая проблема, чтобы каким-то образом получить выделенный текст с веб-страницы, а затем обработать его с помощью контекстного меню... когда я решил для Chrome
, Firefox
и IE11
, я обнаружил, что не могу получить выделенный текст в Firefox
и Internet Explorer
когда выделенный текст находится в поле ввода....
Я искал несколько дней, чтобы как-то решить, и, наконец, я добился успеха...
Это был оригинальный сценарий для Internet Explorer
var parentwin = external.menuArguments
var selectedText = getSel();
function getSel(){
var w=window,d=parentwin.document,gS='getSelection';
return (''+(w[gS]?w[gS]():d[gS]?d[gS]():d.selection.createRange().text)).replace(/(^\s+|\s+$)/g,'');
}
И это для FireFox
var contextMenu = require("sdk/context-menu");
var tabs = require("sdk/tabs");
var clipboard = require("sdk/clipboard");
var {Cc,Ci} = require('chrome');
var simpleGetLibrary = null;
var menuItem = contextMenu.Item({
label: "Get selected text",
context: contextMenu.SelectionContext(),
contentScript: 'self.on("click", function () {' +
' var text = window.getSelection().toString();' +
' self.postMessage(text);' +
'});',
onMessage: function (selectionText) {
console.log(selectionText);
clipboard.set(selectionText); //this line copy the selected text to Clipboard
}
Но я понятия не имел, как я могу каким-то образом получить текст, когда он находится в поле ввода... <INPUT> ...</INPUT>
Решение следующее...