2013-08-12 2 views
5

Ben sitemde bir elementi tıkladığınızda e.timeStamp 866523917 gibi 9 haneli bir sayı olarak olay işleyicisi içinde Firebug tarafından bildirilen dikkat edin ve ne zaman ben farklı bir eleman e.timeStamp tıklayın 1376344365954000. Neden farkı gibi 16 basamaklı sayı olarak Firebug tarafından bu işleyicisinde bildirilmektedir?JavaScript olay zaman damgalarını değil tutarlı

Teşekkürler

+1

sen ne demek istiyorsunuz kullanın: * i tıkladığınızda *? Olayı kim ateşledi? Lütfen bunu gösteren ya da başka bir şekilde konuyla ilgili ayrıntılı bir demo sunun. –

+0

İlginç geliyor. "event.timeStamp", etkinliğin oluşturulduğu milisaniyelerin (çağlardan beri) sayısıdır. Bu kadar büyük bir fark olmamalı. Örnek bir kod sunabilir misiniz? – ntalbs

+0

İşte bir demo - http://jsfiddle.net/stevea/zTm9L/1/. 1376344365954000 doğru sayıdır, çünkü bu 43 yıla düşer. Ama bir sebepten dolayı, yukarıdakiler 877246085 civarında geliyor. Bunlar ms, saniyede yaklaşık 1000 değiştirdiği için, bu sayı yaklaşık 240 saattir. – Steve

cevap

5

defined in standard gibi timeStamp döner numarası: Olay oluşturulduğu de (dönemin göreceli milisaniye cinsinden) zamanı belirtmek için kullanılır

. Nedeniyle bazı sistemler bu bilgiyi sağlamayabilir gerçeğine damgası değeri tüm etkinlikler için değil mevcut olabilir. Uygun olmadığında, 0 değeri döndürülür. 1 Ocak 1970.

0 UTC: dönem zamanının

Örnekler başlatmak sisteminin süresi veya 0 gibidir:: 0

Ancak dönem için net bir tanımı yoktur

Bazı olaylar ilk varyantı kullanıyor (sistem başlangıcı), diğerleri 1970'den beri zaman kullanıyor. Bu nedenle fark. Bir tarafı olarak, timeStamp bazı olaylar için hiç sağlanmaz mümkündür unutmayın, sonra değerini 0 olacaktır.

+0

Her iki tür de Firefox'taki değerleri alır. Bu cevap nasıl açıklıyor? – Barmar

+0

@Barmar düzeltildi. –

0

Sorunun Firefox olduğunu düşünüyorum. Ben büyük bir sayı (13 basamaklı artı 3 sıfır) Safari ve Chrome üzerinde olsun, ben Firefox bir hata olduğu görüşünde bazı maddelerin rastladım: http://bugs.jquery.com/ticket/10755. Bir makale, son yeniden başlamasından bu yana geçen süreyi bildirebileceğini öne sürdü. Firefox tek yön bir kesme ve başka kesme başka bir yol bildirebilirsiniz neden

Hala anlamıyorum. Benim amaçlarım için sadece e.timestamp yerine timestamp = Date.now() kullanacağım. Bu herhangi bir kesintide tutarlı görünüyor. Dönemden beri milisaniye

0

yerine event.timestamp, Date.now()

+1

Tabii ki, bu ikisinin tamamen farklı şeyler olduğunu ekledim - eski, gerçek olayın zaman damgasını, ateşlendiğinde sağlamaya çalışırken, diğeri ise şimdi 'şimdi' çağrısı sırasında zaman damgasını döndürür. Elbette, sessiz varsayımınızda haklısınız, birçok durumda bu fark önemli değil, ama yine de.API'lar kötü tanımlandığında Webs karanlık çağlarına tekrar dokunuyoruz. Ekleme ve her zaman onları çıkarılarak, aksi takdirde biz çevresindeki tüm damgaları karıştırmak için olsun, basitçe her yerde tek çağı kullanmak için güçlerini mal olmaz. – amn