Я пытаюсь использовать jQuery внутри веб-компонента Angular Elements с инкапсуляцией ShadowDom и сталкиваюсь с проблемами с Internet Explorer, в частности с IE11. Ошибка возникает при разрешении в shadowRoot и последующем использовании метода поиска jQuery с селектором, отличным от идентификатора. Сообщение об ошибке:
Unable to get property 'length' of undefined or null reference
Я создал простую страницу, чтобы изолировать проблему, и смог воспроизвести ту же ошибку.
<h2>Hello from outside the Shadow DOM!</h2>
<div class='parent'></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/shadydom/1.1.0/shadydom.min.js"></script>
<script
src="https://code.jquery.com/jquery-3.4.1.js"
integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU="
crossorigin="anonymous"></script>
<script>
// Setup an element in the shadow DOM
var element = $('.parent')[0];
var shadow = element.attachShadow({mode: 'open'});
var text = document.createElement('span');
text.id = 'subtitle';
text.textContent = 'Hello from inside the Shadow DOM!';
shadow.appendChild(text);
//-- End Setup
// This is how the web component code is getting access to the shadow root
var shadowRoot = $(element.shadowRoot);
// No problems with this find call
var subtitle = shadowRoot.find('#subtitle');
// IE Bug is triggered here
var span = shadowRoot.find('span');
console.log('jQuery set count: ' + span.length);
</script>
А вот стек при возникновении ошибки:
Это известная проблема с jQuery и проникновением в теневой DOM в IE11? Есть какие-нибудь решения?