Bir web sayfası için bir araç ipucu uygulamasında çalışıyorum ve bir kullanıcı bir sözcük üzerinde her hareket ettiğinde bir Javascript olayının tetiklenmesini istiyorum.Büyük dizeler için javascript araç ipuçlarının performansını nasıl geliştirebilirim?
Şu anda tek tek her bir kelimenin etrafına bir <span>
etiketi koyarak çalışıyorum, ör. <span id="word1">word1</span> <span id="word2">word2</span> <span id="word3">word3</span>
ve ardından her biri için mouseover/out olaylarını ele alır.
Bu işlem tamam, ancak bazen giriş metni binlerce sözcüktür ve tüm bu etiketler tarayıcıyı yavaşlatır (en azından IE'yi yavaşlatır). Olay temsilcisini kullanıyorum, böylece binlerce etkinlik işleyicisi bağlı değil ve işlendiğinde yeterince hızlı. Sorun, tarayıcıyı işlemde dondurmak için innerHTML ile ayarladığımda tek tek etiketlenmiş sözcükleri oluşturmak için ilk sırada yer alabilen 8+ saniyedir.
(Düzenleme:. Sadece ne demek açıklığa kavuşturmak için - kullanıcı metin dizesi girdiğinde, bu ajax sunucuya gönderilen ve HTML etiketleri sunucu tarafında eklenir ajax başarı callback'inde, ben set öğenin innerHTML'sini doğrudan ayarlayarak yeni HTML. Gecikme, sunucu tarafındaki değil, innerHTML ayarındadır.)
Yine de <span id="line1">word1 word2 word3</span>
olarak değiştirilebilecek ve hala çalışabilecek durumda mı? Kullanıcıların her birine ayrı bir etiket koymadan hangi özel kelimeyi kullandığını bilmenin bir yolu var mı?
Sorunuzu yanıtlamak yerine düzenlemelisiniz. – Anax