textNode.parentNode在Microsoft Edge中跳过锚标记

时间:2016-01-11 14:01:49

标签: javascript html microsoft-edge

我试图通过循环遍历startContainer的父母来从选定的上下文中获取锚标记,如下所示:

function getUrlFromSelection() {
  let $target = document.getSelection().getRangeAt(0).startContainer;

  while ($target.nodeName.toLowerCase() !== 'body') {
    if ($target.nodeName.toLowerCase() === 'a') {
      return $target;
    }
    $target = $target.parentNode;
  }

  return null;
}

这很好用,但Edge似乎跳过了锚标记。

让我们来看一个例子:

<div> 
  Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed 
  diam nonumy <a href="#">eirmod</a> tempor invidunt ut labore 
  et dolore magna aliquyam erat, sed diam voluptua. 
</div>

如果我选择<a href="#">eirmod</a>并调用document.getSelection().getRangeAt(0).startContainer,我会得到对textNode的引用。如果我调用textNode.parentNode,我会获得对周围div的引用,而不是锚标记。此行为仅发生在Edge。

0 个答案:

没有答案