Jest to specjalny wskaźnik, że istnieje Shadow DOM . Te istniały od lat, ale do niedawna programiści nie mieli do nich dostępu. Chrome ma tę funkcję od jakiegoś czasu, inne przeglądarki wciąż nadrabiają zaległości. Można to zmienić w ustawieniach DevTools w sekcji „Elementy”. Odznacz pole „Pokaż cień DOM agenta użytkownika”. To przynajmniej ukryje wszystkie Shadow DOM utworzone wewnętrznie (np. Wybrane elementy). Nie jestem od razu pewien, czy ma to wpływ na elementy utworzone przez użytkowników, takie jak elementy niestandardowe.
Pojawiają się one również w elementach iframe, gdzie masz oddzielne drzewo DOM zagnieżdżone w innym.
Shadow DOM mówi po prostu, że jakaś część strony ma w sobie własny DOM. Style i skrypty mogą być określane w ramach tego elementu, więc to, co w nim działa, jest wykonywane tylko w tej granicy.
Jest to jeden z podstawowych elementów potrzebnych do działania składników sieci Web . To nowa technologia umożliwiająca programistom tworzenie własnych zamkniętych komponentów, których programiści mogą używać tak jak każdego innego elementu HTML.
Na przykład Shadow DOM, gdy masz
<video>
tag na stronie internetowej, jest on wyświetlany jako jeden tag w głównym DOM, ale jeśli włączysz Shadow DOM, będziesz mógł zobaczyć kod HTML odtwarzacza wideo (odtwarzacz DOM).Trafnie wyjaśniono to w tym artykule, http://webcomponents.org/articles/introduction-to-shadow-dom/
źródło
W przypadku komponentów internetowych istnieje fundamentalny problem, który sprawia, że widżety zbudowane z HTML i JavaScript są trudne w użyciu.
Problem : drzewo DOM wewnątrz widżetu nie jest oddzielone od reszty strony. Ten brak hermetyzacji oznacza, że arkusz stylów dokumentu może przypadkowo zastosować się do części wewnątrz widżetu; Twój JavaScript może przypadkowo zmodyfikować części wewnątrz widżetu; Twoje identyfikatory mogą pokrywać się z identyfikatorami wewnątrz widżetu i tak dalej.
Shadow DOM rozwiązuje problem enkapsulacji drzewa DOM .
Na przykład, jeśli masz takie znaczniki:
<button>Hello, world!</button> <script> var host = document.querySelector('button'); var root = host.createShadowRoot(); root.textContent = 'こんにちは、影の世界!'; </script>
to zamiast
Twoja strona wygląda
Nie tylko to, jeśli JavaScript na stronie pyta o zawartość textContent przycisku, nie otrzyma
“こんにちは、影の世界!”
, ale“Hello, world!”
dlatego, że poddrzewo DOM w katalogu głównym cienia jest hermetyzowane .UWAGA : Powyższa treść pochodzi z https://www.html5rocks.com/en/tutorials/webcomponents/shadowdom/, ponieważ pomogła mi lepiej zrozumieć shadow DOM niż odpowiedzi już tutaj. Dodałem tutaj odpowiednią treść, aby pomóc innym, ale spójrz na link do szczegółowej dyskusji na ten temat.
źródło