2013-10-28 27 views
28

O body.scrollTop görünüyor (ve body.scrollLeft) ES5 sıkı modda kaldırılmıştır. Bu özelliklerin diğer DOMElement s üzerinde kullanılmasının hala iyi olduğu göz önüne alındığında bunun nedeni nedir?Body.scrollTop neden kullanımdan kaldırıldı?

Arkaplan Bilgisi:

Ben artırmaya çalışmaz fonksiyonunu (veya azalmaya, belirtildiği gibi) bunların aslında değiştirir biri kadar bir element tüm atalarının scrollTop değerleri var. Ben katı modu ile şikayet kalmak için merak ediyorum, özellikle ebeveynler zincirinin yukarı doğru hareket ettiği gibi body elemanına karşı kontrol etmeliyim.

+3

Eğer katı mod bu konuda herhangi bir etkisi yoktur ne malum? ECMAScript belirtimi, tarayıcının tarayıcı ortamında (JavaScript'in kullanılabileceği çeşitli ortamlardan biri) hazırladığı ana bilgisayar nesnelerine ilişkisizdir ve katı mod bunları değiştiremez. –

+0

Oh Bunu bilmiyordum. Bir krom uzantısı geliştiriyorum ve Ben ("sıkı kullanmak" 'belirtmek;') katı mod kullanımdan kaldırılma body.scrollTop hakkında konsolda uyarıları bir demet başlarken. Bu, şu anda yalnızca Chrome Kanarya'da gerçekleşiyor, ancak yakında Chrome'un kararlı sürümünde de olabileceğini düşündüm. T.J.Crowder @ –

+0

ben 'console' üzerinde uyarı mesajları (Benim son yorumunda bahsedince) önlemek herhangi bir yolu var mı ?. Ayrıca, ECMAScript belirtimi bununla ilgili değilse, tarayıcı neden ilk etapta bunu uyarır? –

cevap

34

Bu kullanımdan kaldırıldı Chrome'un kendi yanlış bir davranış ve onlar güvenerek durdurmak için yazarları uyarıyoruz.

scrolling viewport is represented by document.documentElement (<html>) in standards mode or <body> in quirks mode.

Krom yanlıştır hem modları Görünüm penceresi kaydırma konumunu temsil etmek body.scrollTop kullanır (Quirks mode Navigator 4 ve Explorer 5. belge oluşturma taklid eden). they want to fix this gibi geliyor, bu yüzden yazarların standart davranışları betimlemelerini teşvik ediyorlar.

Ben kodunuzu değiştirmeniz gerekir sanmıyorum. Standart modda body.scrollTop'u kullanırken, body kaydırma konumunu temsil ettiği sürece yanlış bir şey yoktur (body bir kaydırma kutusu vermediyseniz, genellikle 0).

Konsolda document.body.scrollTop yürüterek uyarıyı görebilirsiniz:

body.scrollTop katı modda kaldırılmıştır. Lütfen sıkı modda documentElement.scrollTop kullanın ve sadece quirks modundaysa body.scrollTop kullanın.

-5

scrollTop elemanı kaydırılan ne kadar ifade eder [Açıkçası, bodydocument.body belirtir]. Bu, gövdenin hiçbir zaman kaydırılmadığı için bir scrollTop içermemesi gerektiği anlamına gelir, gövde en üst kaydırma çubuğuna sahiptir, böylece içerikler kaydırılabilir, ancak gövdenin kendisi kaydırılamaz.
bu sayfada son resmi çok açıklıyor:
https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop

+1

Konsolu kontrol ederseniz, 'document.body.srollTop' sayfanın en çok kaç piksel kaydırıldığına eşit bir değere sahiptir. –

+0

Bak: http://jsbin.com/ohUdani/1 ([kaynak] (http://jsbin.com/ohUdani/1/edit)) –

+1

Özür dilerim, her zaman vücudun scrollTop olmaması gerektiğini anladım. Anlaşılan hatalıyım. –

İlgili konular