2015-08-26 28 views
6

Üzerine tıklandığında kapatılacak "Kabul Et" kağıt düğmesini içeren bir kağıt iletişim kutusunu açan bir dokunma işleviyle kağıt düğmem var.Polimer 1.0 Dokunarak olay yayılımı durdurulamıyor

Ekran çözünürlüğüme bağlı olarak alıyorum sorun ve iletişim kutusunun "Kabul Et" düğmesi, iletişim kutusu açıldığında, iletişim kutusu açılır ve iletişim kutusu açılır. On-tap olayı her ikisine de ateş edildiğini farz ediyorum.

Bu 2 yöntemi denedim, ancak yardımcı olmadılar.

event.cancelBubble = true; 
event.stopPropagation(); 
+0

Eğer işlevimi çağırmak için tıklatmayı kullanırsam, bu olmaz. Ama ben hala olayın yayılmasını engellemenin bir yolunu arıyorum. – intosite

+0

event.stopPropagation(); https://github.com/PolymerLabs/more-routing/blob/master/demo/polyfora-forum-index.html –

cevap

0

problem kapasitif ekranlar, hatta fare ile birkaç Milisaniye içinde aynı noktada birden musluk olayı oluşturabilir olmasıdır.

  • fareler için yüksek ve düşük voltaj hızlı bir değişiklik (1 mantıksal 0) (hava arasındaki düğmesine iki kontaktör olabilir) ise bir kondansatör ile ilgili oluk atlayabilir bir AC sinyali wich üretilmesi eşleşme koşulları. Ancak onclick olayı zaten bu davayı yakalamakta ve çözmek için herhangi bir şey yapmanız gerekmez.

  • Kapasitif ekranlar kapasitifleştiricidir ve sadece parmağınızı yuvarlayarak, birden fazla musluk olayını tetiklemelidir çünkü cildiniz farklı bir yalıtım derinliğine sahiptir ve bazı durumlarda dokunun hafifçe dokunup bitmesini zorlaştırır.

Bu fiziksel bir sorun

platform tarafından çözülmesi gerektiğini, ancak şu anda her durumda değildir (ancak cihazların çoğu bu filtre uyguluyor). Bu iss'i, çok az bir süre için işaretleyici olayları yakalayabilen şeffaf bir kaplama elemanı ile çözüyorum, böylece bir tuşun "basılmasını" veya birkaç ms için kapasitif ekranı yakalayabiliyorum.

Sizin için 10-20 ms yeterli ise, requestAnimationFrame on-tap işlevinde bir çerçeve bekleyip iletişim kutusunu gösterin. Ucuz hile, ama ne gerekiyorsa yapar, ama sonunda bir kullanıcı etkileşimini yanıtlamak için 100ms var çünkü iletişim kutusunu göstermek için bir sabit zaman aşımı bekleyebilirsiniz.

Bu, tarayıcı olaylarını değiştirerek düzeltemezsiniz, çünkü aynı olayla karşılaşıncaya kadar ne kadar zaman geçmesi gerektiğine dair bir seçeneğiniz yoktur. Ama eğer bir çerçeve beklersen, olaylar arasında bir gecikme eklediğin gibi davranabilirsin.

İlgili konular