Javascript document.getSelection().toString()通过element.select()选择文本时返回空字符串

Javascript document.getSelection().toString()通过element.select()选择文本时返回空字符串,javascript,jquery,Javascript,Jquery,我正在尝试实现以下两个功能: 用户可以通过单击按钮复制文本区域中的内容。 通过监听复制事件,我可以知道用户是通过按钮、Ctrl-C还是上下文菜单复制内容。 这是我的代码,您也可以在中看到它: 这段代码在Chrome上运行良好。但是,对于Firefox、Internet Explorer和Edge,当我单击复制按钮时,document.getSelection.toString总是返回空字符串。这是故意的,还是我错过了什么 提前谢谢。 尝试: 看这个:谢谢你的回答。You fiddle对我来说也很

我正在尝试实现以下两个功能:

用户可以通过单击按钮复制文本区域中的内容。 通过监听复制事件,我可以知道用户是通过按钮、Ctrl-C还是上下文菜单复制内容。 这是我的代码,您也可以在中看到它:

这段代码在Chrome上运行良好。但是,对于Firefox、Internet Explorer和Edge,当我单击复制按钮时,document.getSelection.toString总是返回空字符串。这是故意的,还是我错过了什么

提前谢谢。

尝试:


看这个:谢谢你的回答。You fiddle对我来说也很有用,但是如果我将代码保存到HTML文件中并在Microsoft Edge仍然为空的document.getSelection.toString中打开它,代码就不起作用了。你能帮我再查一下吗?谢谢
<html>

<head>
</head>
<script src='https://code.jquery.com/jquery-2.2.4.min.js'></script>
<script>
    $(window).bind("copy", function (e) {
        alert(document.getSelection().toString());
    });

    var copyText = function () {
        var txt = document.createElement("textarea");
        txt.textContent = $('#data').val();
        txt.style.position = "fixed";
        document.body.appendChild(txt);
        txt.select();
        try {
            return document.execCommand("copy");
        } catch (ex) {
            return false;
        } finally {
            document.body.removeChild(txt);
        }
    }
</script>

<body>
    Lorem Ipsum
    <textarea id="data">test copy</textarea>
    <button onclick="copyText()">
    Copy Text
    </button>
</body>

</html>
 try {
    var range = document.createRange();
    range.selectNodeContents(txt);
    window.getSelection().addRange(range);
    return document.execCommand("copy");
  }