javascript - .contains() 在 Internet Explorer 中返回 false

标签 javascript html

This code在 Internet Explorer 中返回 false。还有其他选择吗?

<!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 中的当前行为: Current behavior in internet explorer:

最佳答案

你不需要子节点。

因为 DOM 包含检查完整的 DOM 而不是 Node Child。请尝试以下功能而不是您的功能。它正在发挥作用!

<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

关于javascript - .contains() 在 Internet Explorer 中返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49870747/

相关文章:

css - 在 html 页面的容器中打开网站

html - 为什么这个技巧在动态高度 div 中垂直居中文本(以及它为什么会中断)?

javascript - 如果超出 div,JS 显示/隐藏/关闭

javascript - d3.js 数据第一次未绑定(bind)

javascript - 可以使用 CSS 制作动态高度动画吗?接受 JS 替代方案

html - Bootstrap 文本左对齐

javascript - PHP 将 html 放入 Twig 变量中?

javascript - 单击 bootstrap 下 zipper 接时如何获得灰色网页覆盖?

javascript - 如何使用 Javascript 对动态数组中的项目进行分组

javascript - 在 Node JS 中将值从一个对象更新到另一个对象