[英]IE11 selectionchange event activeTarget changes activeTarget when logged
当使用内置搜索逐步完成匹配时,我试图在 IE11 中获取selectionChange
事件的activeTarget
。 在 Firefox 和 Edge 中,以下代码将记录最接近元素所在位置的元素。 所以输入“test test”将返回链接元素。
在 IE11 中,整个事件的日志将包含 target -> activeElement 中的锚元素,但是当您尝试记录它时,它将记录event.target.activeElement
而是记录 body 元素。
有谁知道可能会发生什么和/或如何解决这个问题? 非常感谢帮助。
html:
<html>
<body>
<div class="block display-option-100 expandedblock">
<div class="expand-block block__generic-body" data-expandblock>
<div class="block__row">
<div tabindex="0" class="expand-block__clickable-row" role="tab" aria-controls="114428">
<h2 class="block__heading expand-block__heading ">H55445DEerpfsdfdfs</h2>
<span class="expand-block__statuslabel" data-nojs-hidden>
<span class="statuslabel__open"></span>
<span class="statuslabel__close"></span>
</span>
</div>
<div id="114428" class="expand-block__content" data-expandblockcontent role="tabpanel" aria-expanded="false">
<p><a title="Här testar vi" href="/testi/">Testitesti Rapport</a></p>
<p> </p>
<p><a href="test">herpderp test test</a><br><a href="herp derp">test test jfdsnjdnjf <br></a><a href="fdgfdghfgfdfdg">test tastdsoin tstest</a><br><a href="gfdgfdgfdgfd">yat yat yat yta ggdsggd</a></p>
</div>
</div>
</div>
</div>
</body>
</html>
JavaScript
document.addEventListener("selectionchange", function(e) {
console.log("Selection-change Log");
//e.stopPropagation();
console.log(e);
console.warn(e.target.activeElement);
});
我在两个浏览器上都试过了,它一直工作。
但是,元素需要将 tabindex 定义为 activeElement 的边界,也许这就是您看到 body 元素的原因。
为此,它似乎也在 IE11 上工作,
<p width="100%"><a tabindex="0" style="width:100%; display:inline-block;" title="Här testar vi"><span>Testitesti Rapport</span></a></p>
如果使用事件获取相关元素,则通过使用 document.getSelection() 然后使用 selection.anchorNode.parentNode 获取活动元素来解决它。
如此处的示例所示: https : //chrisdavidmills.github.io/selection-api-examples/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.