2013-03-20 7 views
19

DOMを検索してトラバースするためのカスタム関数を提供することで、Shadow DOM W3Cの草案をJavaScriptでポリ充てることはできますか?これは完了しましたか?私が見つけた試みはむしろ軽いシムであり、仕様をエミュレートするために多くの努力をしないように見えます。ポリゴンを使用してシャドウDOMをどの程度までエミュレートできますか?

これは簡単な作業ではありませんが、確かに誰かがそれを徹底的に検討していると思いますか?

+0

シャドーDOMがこの時点まで利用できなかったブラウザの内部UIを公開しているので、これがどのように機能するかはイメージできません。解決策は、ブラウザのUI動作を最初から完全に複製する必要があります。 –

+1

@Matt Stone - CSSを使ってシャドーDOMの一部であるDOM要素を非表示にし、Javascript DOMクエリ関数(たとえばgetElementById)を修正して隠されたDOM要素を返さないようにすることが考えられます。もちろん、これ以上のことはありません。ポリフィルには明らかに限界があります。 –

+0

@ PatriciaBrothers - ドキュメントフラグメントを使用して、またはDOMからシャドーコンポーネントを削除し、divなどに入れてエミュレートできます。私はこの物が広く実装されているのではないかと疑います。 – RobG

答えて

26

私はここ数ヶ月間、この正確な問題に取り組んできました。

ボトムライン、はい、それはだ、こんなに早く

を来て、ここでは常緑のブラウザhttps://github.com/Polymer/ShadowDOM

^@hostなどのCSS機能のpolyfillingに^働くポリフィルがまだ存在していないがあります具体的にはセカンダリDOMツリーを作成する必要があるためです。できるだけユーザーフレンドリーなものにしようとしましたが、これにはむしろ侵略的なラッパー技術が必要でした。

つまり、div = document.createElement('div')の場合、DIVのように見え、DIVのように機能しますが、実際にはWrapperオブジェクトです。もちろん、究極のゴールは、ポリフィルのもとで実行されているのか、ネイティブで実行されているのかにかかわらず、コードを同じに見せることです。

それは私たちがあなたのためdocumentをラップするためにあなた自身、ラことをしなければならないので、特にそれが、可能ではないですが、100%の防弾ではありません。

document問題以外
wrap(document).querySelector(...) 

、ラッパーであります透過的に作業することを意図しています。これはまったく新しいものなので、私はドキュメントの欠如についてお詫び申し上げます。私たちが話しているように、私たちはそれに取り組んでいる

ご連絡くださいfile issuesご不明な点やご不明な点がございましたら、フィードバックをお寄せください。 [email protected]に、このポリフィル(およびその組織内の他のポリフィル)について議論する電子メールチャネルもあります。

私はこのようなものが広く

真を実施しているが、それは少なくとも、Chromeでだ疑い。

+0

ワウ、スコット。これは素晴らしいです。私はあなたがこのatt Google I/Oを提示した場合、これが(ヒットになる)と考えています。 WebコンポーネントがIE9/10上の任意の形またはフォームに正常にポリフェイルできる場合、名前を付ける必要のないブラウザベンダーは、推奨された美しいW3Cの提出を余儀なくされるでしょう。さもなければ、これを別のWebGLまたはDartにするための多くの理由と力が働いています。これにより、多くのカテゴリーのアプリケーションでデスクトップよりもむしろWebをターゲットとするISVの数が増えます。 –

+1

シムはとても印象的です...モバイルフレンドリーでなければならないウェブサイトのための実行可能な選択肢ですか?私は、シャドーDOMの維持に関連するパフォーマンスの低下がなければならないと確信しています。 –

+1

はい、ポリゴンシャドウDOMのパフォーマンスコストはありますが、ハードナンバーはまだありません。すべての開発が公開されているので、私たちが生成するデータはすべて共有します。カスタム要素やMDVなどの他のテクノロジと連携して使用すると、使用パターンによってポリフィルが頻繁に発生しにくくなることが期待されます。 –

関連する問題