繁体   English   中英

IE11 selectionchange 事件 activeTarget 在记录时更改 activeTarget

[英]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>&nbsp;</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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM