Javascript jQuery没有';无法识别相同的文本节点(有时)
我想使用jQuery调整复制机制。我注意到,当选择的锚节点和焦点节点相同时,相应的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>
.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源代码?这就是我失败的地方。真的!现在在本地尝试了。您不应该将脚本移到正文的末尾吗?我通过将
放在上面(例如:pagehead
)在JSFIDLE中复制了它奇怪的是,您的代码已经使用了DOM-ready
速记,但不管怎样,如果放在
@RokoC.Buljan中,它就会失败。做得好!这是一个bug还是有一些我根本不明白的隐藏原因?是的,但是有独立的HTML源代码?这就是我失败的地方。真的!现在在本地尝试了。您不应该将脚本移到正文的末尾吗?我通过将
放在上面(例如:pagehead
)在JSFIDLE中复制了它奇怪的是,您的代码已经使用了DOM-ready
速记,但不管怎样,如果放在
@RokoC.Buljan中,它就会失败。做得好!这是一个bug还是有一些我根本不明白的隐藏原因?