IE11 selectionchange событие activeTarget изменяет activeTarget при входе в систему - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь получить activeTarget события selectionChange в IE11, когда использую встроенный поиск для просмотра совпадений. В Firefox и Edge следующий код будет записывать элемент, ближайший к тому месту, где он находится. Таким образом, вход «test test» вернет элемент link.

В 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);

});

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Решено с помощью document.getSelection (), а затем selection.anchorNode.parentNode, чтобы получить активный элемент вместо этого, если используется событие для получения соответствующего элемента.

Как видно из примера здесь: https://chrisdavidmills.github.io/selection-api-examples/

0 голосов
/ 08 ноября 2018

Я пробовал это в обоих браузерах, и он работает последовательно.

Однако элемент должен иметь 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...