2013-03-20 15 views
19

Gölge DOM W3C taslağı, DOM'da arama ve geçiş yapmak için özel işlevler sağlayarak JavaScript'te çok doldurulabilir mi? Bu yapıldı mı? Bulduğum bu girişimler oldukça yumuşak şimlerdi ve spekülasyonları taklit etmek için fazla çaba göstermiyorlar.Shadow DOM bir polyfill kullanılarak ne ölçüde emüle edilebilir?

Bunun kolay bir iş olmadığına eminim, ama kesinlikle birileri bunu tam olarak değerlendirdi mi?

+0

Gölge DOM, bu noktaya kadar kullanıma sunulmamış tarayıcı iç kullanıcı arabirimini açığa çıkardığından, bunun nasıl işe yaradığını görüntüleyemiyorum. Bir çözüm, tarayıcı UI davranışını sıfırdan tamamen kopyalamaya ihtiyaç duyacaktır. –

+1

@Matt Stone - Bir fikir, CSS'nin gölge domun bir parçası olan dom öğelerini gizlemek ve Javascript DOM sorgu işlevlerini (örneğin getElementById) herhangi bir gizli DOM öğesini döndürmeyecek şekilde değiştirmektir. Elbette, bundan çok daha fazlası var ve bir polifilliğin açık bir şekilde sınırlamaları olacaktır. –

+0

@ PatriciaBrothers - muhtemelen belge parçaları kullanılarak ya da gölge bileşenlerini DOM'dan çıkararak ve bunları bir div'a yerleştirerek taklit edilebilir. Bu şeyin yaygın olarak uygulandığından şüphe etmiyorum, buna çok fazla ihtiyaç yok. – RobG

cevap

26

Son birkaç aydır bu sorun üzerinde çalışıyorum.

burada dökmeyen tarayıcılarda^çalışan bir polyfill var

Alt çizgi https://github.com/Polymer/ShadowDOM

CSS özelliklerinden ^polyfilling @host yakında Yani

geliyor, henüz orada değiliz gibi evet, bu kadar bir Özellikle polyfill için zor bir şey, çünkü ikincil DOM ağaçları icat etmek zorundayız. Oldukça invaziv bir sarmalayıcı tekniğinin kullanılmasını gerektiren, kullanıcı dostu olarak yapmaya çalıştık. Başka bir deyişle

, sen div = document.createElement('div') varsa, bir DIV benziyor ve bir DIV gibi çalışır, ama aslında bir Sarıcı nesnesidir bir şey olsun. Nihai amaç elbette, kodunuzun, polifiliğin altında veya yerel bir uygulama altında çalışıp çalışmadığına bakmasıdır.

% 100 kurşun geçirmez bize sizin için document sarmak mümkün değildir, özellikle de değil, bu yüzden, a la kendiniz yapmak bu duruma:

document sorunu dışında
wrap(document).querySelector(...) 

, sargı olan şeffaf çalışmak için tasarlanmıştır. Hepsi yepyeni, bu yüzden doküman eksikliğinden dolayı özür dilerim. Konuştuğumuz gibi üzerinde çalışıyoruz.

Lütfen file issues sorularınız veya sorunlarınız varsa, geribildirim almayı seviyoruz. Ayrıca bu polyfill'i (ve bu orgdaki diğer polyfill'leri) [email protected] adresinden tartışmak için bir e-posta kanalı da vardır.

Ben bu malzeme yaygın

Gerçek

uygulanmaktadır şüphe ama en azından Chrome'da bu.

+0

Vay, Scott. Bu harika. Bunu, Google I/O’yu sunduğunuzda bir hit olacak mı diye düşünüyorum. Web Bileşenleri IE9/10 üzerinde herhangi bir biçimde veya biçimde başarıyla çok doldurulmuşsa, adlandırılmaması gereken tarayıcı satıcısı, önerilen ve güzel W3C gönderimlerinize atlamak zorunda kalacaktır. Aksi takdirde, bu işi başka bir WebGL veya Dart yapmak için birçok sebep ve güç vardır.Bu, birçok uygulama kategorisi için masaüstünden ziyade web’yi hedefleyen çok sayıda ISV’yi hedefler. –

+1

Şim çok etkileyicidir ... Acaba, mobil uyumlu olması gereken web siteleri için uygun bir seçenek mi? Eminim DOM'in gölgesinde kalmasını sağlayan bir performans vuruşu olmalı. –

+1

Evet, çok doldurma gölgesi DOM için bir performans maliyeti var, ancak henüz hiç zor rakamımız yok. Tüm gelişmeler açıkken, bu yüzden oluşturduğumuz verileri paylaşacağız. Umarız, Özel Elemanlar ve MDV gibi diğer teknolojilerle birlikte kullanıldığında, kullanım paternleri polifilizi daha az sıklıkta kışkırtır. –

İlgili konular