IE和FF下javascript獲取網頁及窗口大小的區別
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
在新定義出來的標準下 document.documentelement.clientheight在ie和火狐里都能獲取正確值,下面一篇文章詳細介紹了獲取各種瀏覽器可見窗口大小這方面的差別:[br][br][br][br]在本地測試當中:[br]在ie、firefox、opera下都可以使用[br]document.body.clientwidth[br]document.body.clientheight[br]即可獲得,很簡單,很方便。[br][br]而在公司項目當中:[br]opera仍然使用[br]document.body.clientwidth[br]document.body.clientheight[br]可是ie和firefox則使用[br]document.documentelement.clientwidth[br]document.documentelement.clientheight[br][br][br]如果在頁面中添加這行標記的話[br][br]在ie中:[br]document.body.clientwidth ==> body對象寬度[br]document.body.clientheight ==> body對象高度[br]document.documentelement.clientwidth ==> 可見區域寬度[br]document.documentelement.clientheight ==> 可見區域高度[br]在firefox中:[br]document.body.clientwidth ==> body對象寬度[br]document.body.clientheight ==> body對象高度[br]document.documentelement.clientwidth ==> 可見區域寬度[br]document.documentelement.clientheight ==> 可見區域高度[br]?[br]在opera中:[br]document.body.clientwidth ==> 可見區域寬度[br]document.body.clientheight ==> 可見區域高度[br]document.documentelement.clientwidth ==> 頁面對象寬度(即body對象寬度加上margin寬)[br]document.documentelement.clientheight ==> 頁面對象高度(即body對象高度加上margin高)[br][br][br]用 javascript 獲取當頁面上鼠標(光標)位置在許多情況下都會用到,比如拖放,懸停提示(tooltip)等等。當然,這里我們依然要面對瀏覽器的兼容問題,在不同的瀏覽器下,對[br][br]這些相關的屬性處理方式也不同,本文詳細介紹了瀏覽器在處理這些屬性時的差異和最終的解決方法。[br][br][br][br]上面的代碼我們在 怎么用 javascript 實現拖拽中已經介紹過了,由于這個需求我們經常用到,所以我們將這段代碼獨立成一篇文章,供新手查詢。[br][br]使用方式:[br]code:[br]document.onmousemove = mousemove;[br]function mousemove(ev){[br] ev = ev || window.event;[br] var mousepos = mouseposition(ev);[br]}[br][br]關于代碼的詳細說明,原文中已經介紹,現轉到此處:[br][br]我們首先要聲明一個 evnet 對象,無論移動、點擊、按鍵等,都會激活一個 evnet ,在 internet explorer 里, event 是全局變量,會被存儲在 window.event 里. 在 firefox[br][br]或者其他瀏覽器,event 會被相應的函數獲取.當我們將mousemove函數賦值于document.onmousemove,mousemove 會獲取鼠標移動事件。[br][br]為了讓 ev 在所有瀏覽器下獲取了 event 事件,在firefox下"||window.event"將不起作用,因為ev已經有了賦值。在 msie 中 ev 為空,所以得到 window.event 。[br][br]因為在這篇文章中我們需要多次獲取鼠標位置,所以我們設計了一個 mouseposition 函數,它包含一個參數 : event 。[br][br]因為我們要在 msie 和其他瀏覽器下運行,firefox 和其他瀏覽器用 event.pagex 和 event.pagey 來表示鼠標相對于文檔的位置,如果你有一個 500*500 的窗口并且你的鼠標在絕對[br][br]中間,那么 pagex 和 pagey 的值都是 250,如果你向下滾動 500, 那么 pagey 將變成 750。[br][br]msie 正好相反,它使用 event.clientx 和 event.clienty 表示鼠標相當于窗口的位置,而不是文檔。在同樣的例子中,如果你向下滾動 500,clienty 依然是 250,因此,我們需要[br][br]添加 scrollleft 和 scrolltop 這兩個相對于文檔的屬性。最后,msie 中文檔并不是從 0,0 開始,而是通常有一個小的邊框(通常是 2 象素),邊框的大小定義在 [br][br]document.body.clientleft 和 clienttop 中,我們也把這些加進去。[br][br]很幸運,我們現在已經用 mouseposition 函數解決了坐標問題,不需為此費心了。[br]tag標簽: ie,ff,javascript,clientwidth,clientheight
該文章在 2010/10/16 16:57:24 編輯過 |
關鍵字查詢
相關文章
正在查詢... |