.contains()在Internet Explorer中返回false

4

这段代码 在Internet Explorer中无效。有什么替代方案吗?

<!DOCTYPE html>
<html>

<head>
  <style>
    #myDIV {
      border: 1px solid black;
    }
  </style>
</head>

<body>

  <div id="myDIV">
    <p>I am a p element inside div, and I have a <span id="mySPAN">span</span> element inside of me.</p>
  </div>
  <p>I am a p element inside div, and I have a <span id="mySPAN">span</span> element inside</p>


  <button onclick="myFunction()">Try it</button>

  <p id="demo"></p>

  <script>
    function myFunction() {
      var span = document.getElementById("mySPAN");
      var text = span.childNodes[0];
      var div = document.getElementById("myDIV").contains(text);
      document.getElementById("demo").innerHTML = div;
    }
  </script>

</body>

</html>

我想检查 div 元素是否包含所选范围:
function getRange(root): Range {
    const sel = window.getSelection();
    const range = sel.getRangeAt(0);
    if (range && range.commonAncestorContainer !== root && root.contains(range.commonAncestorContainer)) {
        return range.cloneRange();
    }
    return null;
}

我想检查 div 元素是否包含所选范围:

Internet Explorer 中的当前行为: Internet Explorer 中的当前行为:


你的情况是什么? - Doruk
3
你的代码中有两个 <span id="mySPAN">span</span>,你应该知道 ID 不能重复。 - 31piy
我想检查div元素是否包含所选范围:function getRange(root): Range { const sel = window.getSelection(); const range = sel.getRangeAt(0); if (range && range.commonAncestorContainer !== root && root.contains(range.commonAncestorContainer)) { return range.cloneRange(); } return null; } - Sidal
你在w3schools上托管的代码和你分享的片段根本没有关系。如果第一个代码返回false,而你甚至没有在第二个片段中使用它,这有什么关系呢? - Patrick Roberts
1个回答

0

你不需要子节点。

因为 DOM 包含检查整个 DOM 而不是节点子级。请尝试使用下面的函数代替您的函数。它可以正常工作!

<script>
function myFunction() {
    var span = document.getElementById("mySPAN");
    var div = document.getElementById("myDIV").contains(span);
    document.getElementById("demo").innerHTML = div;
}
</script>

演示: https://www.w3schools.com/code/tryit.asp?filename=FQFMFOKPLHO3


如果 range.commonAncestorContainer 类型不是 [object Text],你的代码就能正常工作! 否则,如果类型为 [object Text],你的代码将无法正常工作! - Sidal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接