我如何从上下文菜单中访问IE11中的选定文本,并复制到剪贴板

时间:2015-01-14 11:19:58

标签: javascript internet-explorer contextmenu

我已尝试过任何方法来获取上下文菜单的选定文本,但它在IE11中无效。 对于上下文菜单添加,我在注册表中添加了一些代码,并在Javascript中添加了一个htm文件。 首先我试过这个:

var parentwin = external.menuArguments;
var doc = parentwin.document;
var sel = doc.selection;
var rng  = sel.createRange();
var selectedtext = new String(rng.text);

然后我在IE11文档中读到,document.selection已在API中使用window.getSelection();

重新定义

所以我尝试了任何变体,window.getSelection ......没有用......

知道如何访问所选文字吗?

我也在搜索如何复制到剪贴板..在chrome中我使用过这个脚本:

function copyToClipboard(text){
 var copyDiv = document.createElement('div');
 copyDiv.contentEditable = true;
 document.body.appendChild(copyDiv);
 copyDiv.innerHTML = text;
 copyDiv.unselectable = "off";
 copyDiv.focus();
 document.execCommand('SelectAll');
 document.execCommand("Copy", false, null);
 document.body.removeChild(copyDiv);
        }  

1 个答案:

答案 0 :(得分:0)

最后我找到了解决方案:(在IE11中测试)

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,'');
}

parentwin.console.log("the selected text is:"+sel);
copyToClipboard(selectedText);


function copyToClipboard(s) {           //only works in IE :(
if (window.clipboardData && clipboardData.setData) {
    clipboardData.setData('text', s);
}
}