Javascript jQuery没有';无法识别相同的文本节点(有时)

Javascript jQuery没有';无法识别相同的文本节点(有时),javascript,jquery,equality,textnode,Javascript,Jquery,Equality,Textnode,我想使用jQuery调整复制机制。我注意到,当选择的锚节点和焦点节点相同时,相应的jQuery对象(使用.is方法进行比较)就不同了 在Chrome和Firefox(Windows)中,此示例中的比较失败: <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

我想使用jQuery调整复制机制。我注意到,当选择的锚节点和焦点节点相同时,相应的jQuery对象(使用
.is
方法进行比较)就不同了

在Chrome和Firefox(Windows)中,此示例中的比较失败:

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
        <script>
            $(function () {
                $("#testdiv").on("copy", function(event) {
                    var sel = window.getSelection();
                    var $anchorNode = $(sel.anchorNode);
                    var $focusNode = $(sel.focusNode);
                    $("#logdiv").append("<p>The DOM nodes are" + (sel.anchorNode == sel.focusNode ? "" : "<b> not</b>") + " the same.</p>");
                    $("#logdiv").append("<p>The jQuery objects are" + ($anchorNode.is($focusNode) ? "" : "<b> not</b>") + " the same.</p>");
                    $("#logdiv").append("<p>Parent: the DOM nodes are" + (sel.anchorNode.parent == sel.focusNode.parent ? "" : "<b> not</b>") + " the same.</p>");
                    $("#logdiv").append("<p>Parent: the jQuery objects are" + ($anchorNode.parent().is($focusNode.parent() ) ? "" : "<b> not</b>") + " the same.</p>");
                });
            });
        </script>
    </head>
<body>
    <div id="testdiv">
        Select some text inside this div and press Ctrl+C.
    </div>
    <div id="logdiv" style="border: 1pt solid black;"><p><i>Log</i></p></div>
</body>
</html>

$(函数(){
$(“#testdiv”)。关于(“复制”,函数(事件){
var sel=window.getSelection();
变量$anchorNode=$(sel.anchorNode);
变量$focusNode=$(sel.focusNode);
$(“#logdiv”).append(DOM节点是“+(sel.anchorNode==sel.focusNode?”:“不是”)+”相同。

”; $(“#logdiv”).append(jQuery对象是“+($anchorNode.is($focusNode)?”“:“not”)+”相同。

”; $(“#logdiv”).append(“父节点:DOM节点是”+(sel.anchorNode.Parent==sel.focusNode.Parent?”:“不是”)+“相同的。

”; $(“#logdiv”).append(Parent:jQuery对象是“+($anchorNode.Parent().is($focusNode.Parent())?”:“not”)+“same.

”; }); }); 选择此div中的一些文本,然后按Ctrl+C。 日志

我准备了一个例子来说明这一点,但在那里无法复制

所以我试着使用So的snippet小部件。它再次发挥作用:

$(函数(){
$(“#testdiv”)。关于(“复制”,函数(事件){
var sel=window.getSelection();
变量$anchorNode=$(sel.anchorNode);
变量$focusNode=$(sel.focusNode);
$(“#logdiv”).append(DOM节点是“+(sel.anchorNode==sel.focusNode?”:“不是”)+”相同。

”; $(“#logdiv”).append(jQuery对象是“+($anchorNode.is($focusNode)?”“:“not”)+”相同。

”; $(“#logdiv”).append(“父节点:DOM节点是”+(sel.anchorNode.Parent==sel.focusNode.Parent?”:“不是”)+“相同的。

”; $(“#logdiv”).append(Parent:jQuery对象是“+($anchorNode.Parent().is($focusNode.Parent())?”:“not”)+“same.

”; }); });

选择此div中的一些文本,然后按Ctrl+C。

日志

是的,但是否使用独立的HTML源代码?这就是我失败的地方。真的!现在在本地尝试了。您不应该将脚本移到正文的末尾吗?我通过将
放在上面(例如:page
head
)在JSFIDLE中复制了它奇怪的是,您的代码已经使用了
DOM-ready
速记,但不管怎样,如果放在
@RokoC.Buljan中,它就会失败。做得好!这是一个bug还是有一些我根本不明白的隐藏原因?是的,但是有独立的HTML源代码?这就是我失败的地方。真的!现在在本地尝试了。您不应该将脚本移到正文的末尾吗?我通过将
放在上面(例如:page
head
)在JSFIDLE中复制了它奇怪的是,您的代码已经使用了
DOM-ready
速记,但不管怎样,如果放在
@RokoC.Buljan中,它就会失败。做得好!这是一个bug还是有一些我根本不明白的隐藏原因?