Làm cách nào để chọn các nút trong DOM bóng? Hãy xem xét ví dụ sau:Làm cách nào để truy vấn các phần tử bên trong DOM bóng từ bên ngoài trong Dart?
cấu trúc của "không bóng tối" DOM
<app-element>
#shadow-root
<h2></h2>
<content>
#outside shadow
<h2></h2>
</content>
<ui-button>
#shadow-root
<h2></h2>
</ui-button>
</app-element>
index.html
<body>
<app-element>
<!-- OK: querySelect('app-element').querySelect('h2') -->
<!-- OK: querySelect('app-element h2') -->
<!-- There is no problem to select it -->
<h2>app-element > content > h2</h2>
</app-element>
</body>
templates.html
<polymer-element name="ui-button" noscript>
<template>
<!-- FAIL: querySelect('app-element::shadow ui-button::shadow h2') -->
<h2>app-element > ui-button > h2</h2>
</template>
</polymer-element>
<polymer-element name="app-element" noscript>
<template>
<!-- FAIL: querySelect('app-element::shadow').querySelect('h2') -->
<!-- FAIL: querySelect('app-element::shadow h2') -->
<!-- FAIL: querySelect('app-element').shadowRoot.querySelect('h2') -->
<h2>app-element > h2</h2>
<content></content>
<ui-button></ui-button>
</template>
</polymer-element>
Trong các bình luận như "OK: querySelect()" tôi hiển thị các bộ chọn mà tôi đã cố gắng chạy từ bên ngoài bất kỳ DOM được tô bóng nào.
Tôi đã đọc bài viết sau: http://www.html5rocks.com/en/tutorials/webcomponents/shadowdom-201/?redirect_from_locale=ru và dựa trên thực tế là nó đã được nói trong bài viết, truy vấn như: document.querySelector('app-element::shadow h2');
trong JS sẽ hoạt động như mong đợi. Tuy nhiên trong Dart nó không hoạt động.
Tôi làm gì sai?
ở đâu 'querySelector ... 'mã của bạn? Trong chính, trong lớp 'AppElement', ở đâu trong lớp? –
Sử dụng CSS mọi thứ hoạt động như mong đợi: bộ chọn giả như ':: shadow' và combinator'/deep/'ảnh hưởng đến các phần tử. Tuy nhiên nó không có ý nghĩa khi tôi sử dụng các hàm 'querySelect (All)' của Dart. Chỉ có thể truy cập h2 bên trong thẻ ''. Chuyện gì vậy? –
Mã trong 'chính() {}' –