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

How I can access the selected text in IE11 from context menu, and copy to Clipboard

本文关键字:文本 复制 剪贴板 上下文 菜单 访问 IE11      更新时间:2023-09-26

我已经尝试了任何方法来获取上下文菜单的选定文本,但它在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);
        }  

最后我找到了解决方案:(在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);
}
}