1、各瀏覽器下 scrollTop的差異
IE6/7/8:
對于沒有doctype聲明的頁面里可以使用? document.body.scrollTop 來獲取 scrollTop高度 ;
對于有doctype聲明的頁面則可以使用 document.documentElement.scrollTop;
Safari:
safari 比較特別,有自己獲取scrollTop的函數 : window.pageYOffset ;
Firefox:
火狐等等相對標準些的瀏覽器就省心多了,直接用 document.documentElement.scrollTop ;
2、獲取scrollTop值
完美的獲取scrollTop 賦值短語 :
var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
DTD相關說明:
頁面具有 DTD,或者說指定了 DOCTYPE 時,使用 document.documentElement。
頁面不具有 DTD,或者說沒有指定了 DOCTYPE,時,使用 document.body。
在 IE 和 Firefox 中均是如此。
為了兼容,不管有沒有 DTD,可以使用如下代碼:
var scrollTop = window.pageYOffset //用于FF|| document.documentElement.scrollTop || document.body.scrollTop || 0;
documentElement 和 body 相關說明:
body是DOM對象里的body子節點,即 <body> 標簽;
documentElement 是整個節點樹的根節點root,即<html> 標簽;
DOM把層次中的每一個對象都稱之為節點,就是一個層次結構,你可以理解為一個樹形結構,就像我們的目錄一樣,一個根目錄,根目錄下有子目錄,子目錄下還有子目錄。
以HTML超文本標記語言為例:整個文檔的一個根就是,在DOM中可以使用document.documentElement來訪問它,它就是整個節點樹的根節點。而body是子節點,要訪問到body標簽,在腳本中應該寫:document.body。
?
3.javascript:void(0)
<a href="javascript:doTest2();void(0);">here</a>
Javascript中void是一個操作符,該操作符指定要計算一個表達式但是不返回值。
void 操作符用法格式如下:
1. javascript:void (expression)
2. javascript:void expression
expression 是一個要計算的 Javascript 標準的表達式。表達式外側的圓括號是選的,但是寫上去是一個好習慣。 (實現版本?? Navigator 3.0?? )
你以使用 void 操作符指定超級鏈接。表達式會被計算但是不會當前文檔處裝入任何內容。
下面的代碼創建了一個超級鏈接,當用戶以后不會發生任何事。當用戶鏈接時,void(0) 計算為 0,但 Javascript 上沒有任何效果。
<A HREF="javascript:void(0)">單此處什么也不會發生</A>
下面的代碼創建了一個超級鏈接,用戶單時會提交表單。
<A HREF="javascript:void(document.form.submit())">單此處提交表單</A>
4.a href=#與 a href=javascript:void(0) 的區別
#包含了一個位置信息
默認的錨是#top 也就是網頁的上端
而javascript:void(0)?? 僅僅表示一個死鏈接
這就是為什么有的時候頁面很長瀏覽鏈接明明是#是
跳動到了頁首
而javascript:void(0) 則不是如此
所以調用腳本的時候最好用void(0)
或者<input onclick>
<div onclick>等