js獲取瀏覽器窗口屬性

網頁可見區域寬: document.body.clientWidth;
網頁可見區域高: document.body.clientHeight;
網頁可見區域寬: document.body.offsetWidth    (包括邊線的寬);
網頁可見區域高: document.body.offsetHeight   (包括邊線的寬);
網頁正文全文寬: document.body.scrollWidth;
網頁正文全文高: document.body.scrollHeight;
網頁被捲去的高: document.body.scrollTop;
網頁被捲去的左: document.body.scrollLeft;
網頁正文部分上: window.screenTop;
網頁正文部分左: window.screenLeft;
屏幕分辨率的高: window.screen.height;
屏幕分辨率的寬: window.screen.width;
屏幕可用工做區高度: window.screen.availHeight;
屏幕可用工做區寬度:window.screen.availWidth;


scrollHeight: 獲取對象的滾動高度。  
scrollLeft:設置或獲取位於對象左邊界和窗口中目前可見內容的最左端之間的距離
scrollTop:設置或獲取位於對象最頂端和窗口中可見內容的最頂端之間的距離
scrollWidth:獲取對象的滾動寬度
offsetHeight:獲取對象相對於版面或由父座標 offsetParent 屬性指定的父座標的高度
offsetLeft:獲取對象相對於版面或由 offsetParent 屬性指定的父座標的計算左側位置
offsetTop:獲取對象相對於版面或由 offsetTop 屬性指定的父座標的計算頂端位置  
event.clientX 相對文檔的水平座標
event.clientY 相對文檔的垂直座標

event.offsetX 相對容器的水平座標
event.offsetY 相對容器的垂直座標  
document.documentElement.scrollTop 垂直方向滾動的值
event.clientX+document.documentElement.scrollTop 相對文檔的水平座標+垂直方向滾動的量
Post by molong on 2009-05-19 11:57 PM   #1

要獲取當前頁面的滾動條縱座標位置,用:
document.documentElement.scrollTop;
而不是:
document.body.scrollTop;
documentElement 對應的是 html 標籤,而 body 對應的是 body 標籤。

在標準w3c下,document.body.scrollTop恆爲0,須要用document.documentElement.scrollTop來代替;
若是你想定位鼠標相對於頁面的絕對位置時,你會發現google裏面1000篇文章裏面有999.99篇會讓你使用 event.clientX+document.body.scrollLeft,event.clientY+document.body.scrollTop, 若是你發現你的鼠標定位偏離了你的想象,請不要奇怪,這是再正常不過的事情。
ie5.5以後已經不支持document.body.scrollX對象了。
因此在編程的時候,請加上這樣的判斷
if (document.body && document.body.scrollTop && document.body.scrollLeft)
{
top=document.body.scrollTop;
left=document.body.scrollleft;    
}
if (document.documentElement && document.documentElement.scrollTop && document.documentElement.scrollLeft)
{
top=document.documentElement.scrollTop;
left=document.documentElement.scrollLeft;
}css

 

 

Javascript中的常見問題html

下面簡單使用Jquery來操做iframe的一些記錄,這個使用純JS與能夠實現。node

第1、在iframe中查找父頁面元素的方法:
$('#id', window.parent.document)編程

第2、在父頁面中獲取iframe中的元素方法:
$(this).contents().find("#suggestBox")windows

第3、在iframe中調用父頁面中定義的方法和變量:
parent.method
parent.value瀏覽器



1. 集合類對象問題 
現有代碼中許多集合類對象取用時使用 (),IE 能接受,Firefox 不能。 
解決方法:改用 [] 做爲下標運算。如:document.forms("formName") 改成緩存

Js代碼 
  1. document.forms["formName"];   
  2. //又如:   
  3. document.getElementsByName("inputName")(1);   
  4. //改成   
  5. document.getElementsByName("inputName")[1];  
[js]  view plain copy
 
  1.    
[js]  view plain
  1.    


2. DIV對象 
在 IE 中,DIV對象可使用ID做爲對象變量名直接使用。在 Firefox 中不能。 
DivId.style.display = "none"; 
解決方法:document.getElementById("DivId").style.display = "none"; 
ps:得對象的方法不論是不是DIV對象,都應該使用getElementById方法。 


3. 關於frame 
現有問題:在 IE中 能夠用window.testFrame取得該frame,mf中不行 
解決方法:在frame的使用方面Firefox和IE的最主要的區別是: 
若是在frame標籤中書寫了如下屬性: 
那麼IE能夠經過id或者name訪問這個frame對應的window對象 
而mf只能夠經過name來訪問這個frame對應的window對象 
例如若是上述frame標籤寫在最上層的window裏面的htm裏面,那麼能夠這樣訪問 
IE: window.top.frameId或者window.top.frameName來訪問這個window對象 
Firefox:只能這樣window.top.frameName來訪問這個window對象 
另外,在mf和ie中均可以使用window.top.document.getElementById("frameId")來訪問frame標籤 
而且能夠經過window.top.document.getElementById("testFrame").src = 'xx.htm'來切換frame的內容 
也均可以經過window.top.frameName.location = 'xx.htm'來切換frame的內容 


4. 窗口 
現有問題:IE中能夠經過showModalDialog和showModelessDialog打開模態和非模態窗口,可是Firefox不支持。 
解決辦法:直接使用window.open(pageURL,name,parameters)方式打開新窗口。 
若是須要傳遞參數,可使用frame或者iframe。 


5. 在JS中定義各類對象變量名時,儘可能使用id,避免使用name. 
在 IE 中,HTML 對象的 ID 能夠做爲 document 的下屬對象變量名直接使用。在 Firefox 中不能,因此在日常使用時請儘可能使用id,避免只使用name,而不使用id。


6. document.all 
Firefox能夠兼容document.all, 但會生成一條警告。能夠用getElementById("*") 或者 getElementByTagName("*)來代替
不過對於document.all.length等屬性,則徹底不兼容。你們儘可能不要使用document.all屬性. 


7. parentElement 
IE中支持使用parentElement和parentNode獲取父節點. 
而Firefox只可使用parentNode. 


8. event 
W3C不支持windows.event 
比方說,在IE裏面:less

Js代碼 
  1. function onMenuClick(){   
  2.     collapseMenu(event.srcElement);   
  3. }  
[js]  view plain copy
 
  1.    
[js]  view plain
  1.    


工做正常。不過在Firefox中,則改爲:dom

Js代碼 
  1. function onMenuClick(evt){   
  2.     if(evt == null)   
  3.     evt = window.event; // For IE  
  4.     var srcElement = evt.srcElement? evt.srcElement : evt.target;   
  5.     // IE使用srcElement, 而Firefox使用target  
  6.     collapseMenu(srcElement);  
[js]  view plain copy
 
  1.    
[js]  view plain
  1.    



9. event.x 與 event.y 問題 
在IE 中,event 對象有 x, y 屬性,Firefox中沒有。 
解決方法: 
在Firefox中,與event.x 等效的是 event.pageX。但event.pageX IE中沒有。 
故採用 event.clientX 代替 event.x。在IE 中也有這個變量。 
event.clientX 與 event.pageX 有微妙的差異(當整個頁面有滾動條的時候), 
不過大多數時候是等效的。 
若是要徹底同樣,能夠稍麻煩些:佈局

Js代碼 
  1. mX = event.x ? event.x : event.pageX;  
    [js]  view plain copy
     
    1.    
    [js]  view plain
    1.    

而後用 mX 代替 event.x 


10. 用idName字符串取得對象的問題 
在IE中,利用 eval(idName) 能夠取得 id 爲 idName 的 HTML 對象,在Firefox中不能。 
解決辦法:用 getElementById(idName) 代替 eval(idName). 


14. nodeName 和 tagName 問題 
在Firefox中,全部節點均有 nodeName 值,但 textNode 沒有 tagName 值。 
在IE中nodeName 的使用有時會有問題。 
解決方法: 
使用 tagName,但應檢測其是否爲空。 


15. input的type屬性 
IE下 input.type屬性爲只讀,可是Firefox下能夠修改. 


16. 自定義屬性 
在mf中,本身定義的屬性必須getAttribute()取得 
而IE能夠直接經過"."運算符獲取. 


17.const 問題 
在 IE 中不能使用 const 關鍵字。如 
const constVar = 32; 
在IE中這是語法錯誤. 
解決方法: 
不使用 const ,以 var 代替. 


18. body 對象 
Firefox的body在body標籤沒有被瀏覽器徹底讀入以前就存在,而IE則必須在body徹底被讀入以後才存在. 


19. img對象alt和title的解析 
alt:當照片不存在或者load錯誤時的提示, 
title:照片的tip說明, 
在IE中若是沒有定義title,alt也能夠做爲img的tip使用,可是在Firefox中,二者徹底按照標準中的定義使用 
在定義img對象時,最好將alt和title對象都寫全,保證在各類瀏覽器中都能正常使用 


20.childNodes獲取的節點 
childNodes的下標的含義在IE和Firefox中不一樣,Firefox使用DOM規範,childNodes中會插入空白文本節點。 
獲取子節點時,通常能夠經過node.getElementsByTagName()來回避這個問題。 


21.removeNode() 
Firefox中節點沒有removeNode方法,必須使用以下方法

Js代碼 
  1. node.parentNode.removeChild(node);  



22.innerText 
IE支持,FIREFOX不支持 
FF中設置內容文本是用textConent屬性. 

23. XMLHTTP的區別 
FireFox中的建立方法爲:

Js代碼 
  1. xmlhttp=new XMLHttpRequest()  


而在IE中爲:

Js代碼 
  1. xmlhttp=new ActiveXObject(」Microsoft.XMLHTTP」)  



24. img的src刷新問題 
在IE 下能夠用 能夠刷新圖片,但在FireFox下不行。主要是緩存問題,在地址後面加個隨機數就解決了:

Js代碼 
  1. myImg.src=this.src+’?'+Math.random();  



25. setAttribute()設置屬性問題 
IE中不少屬性都不能用setAttribute進行設置,但Firefox中卻能夠,如:

Js代碼 
  1. theDiv.setAttribute('style','color:red');   
  2. //改成:   
  3. object.style.cssText = 'color:red;';   
  4.   
  5.   
  6. setAttribute('class','styleClass')   
  7. //改成:   
  8. setAttribute('className','styleClass');   
  9.   
  10.   
  11. obj.setAttribute('onclick','funcitonname();');   
  12. //改成:   
  13. obj.onclick=function(){fucntionname();};  



...等等 

-----------------------------------------------------------------------------------------

IE和FIREFOX在解析CSS方面的區別

1. 對高度的解析
 
IE:將根據內容的高度變化,包括未定義高度的圖片內容,即便定義了高度,當內容超太高度時,將使用實際高度 
Firefox:沒有定義高度時,若是內容中包括了圖片內容,Firefox的高度解析是根據印刷標準,這樣就會形成和實際內容高度不符合的狀況;當定義了高度,可是內容超太高度時,內容會超出定義的高度,可是區域使用的樣式不會變化,形成樣式錯位。
結論:你們在能夠肯定內容高度的狀況下最好定義高度,若是真的沒有辦法定義高度,最好不用使用邊框樣式,不然樣式確定會出現混亂! 


3.佈局問題 
當你在寫css的時候,特別是用float: left(或right)排列一竄圖片時,會發如今firefox裏面正常而IE裏面有問題。不管你用margin:0,仍是border: 0來約束,都無濟於事。
其實這裏還有另一個問題,就是IE對於空格的處理,firefox是忽略的而IE對於塊與塊之間的空格是處理的。也就是說一個div結束後要緊接着一個div寫,中間不要有回車或者空格。否則也許會有問題,好比3px的誤差,並且這個緣由很難發現。
很是不走運的是我又碰到了這樣的問題,多個img標籤連着,而後定義的float: left,但願這些圖片能夠連起來。可是結果在firefox裏面正常而IE裏面顯示的每一個img都相隔了3px。我把標籤之間的空格都刪除都沒有做用。
後來的解決方法是在img外面套li,而且對li定義margin: 0,這樣就解決了IE和firefox的顯示誤差。IE對於一些模型的解釋會產生不少錯誤問題,只有多多嘗試才能發現緣由。
這只是一些簡單的區別,在作佈局和CSS設計時候能夠綜合考慮,但最爲有效與簡單的解決兼容問題仍是用TABLE表格,表格在兼容性方面有着不錯的表現. 


4.鼠標樣式 
firefox不支持hand,但ie支持pointer 
解決方法: 統一使用pointer 

5. padding 問題 
padding 5px 4px 3px 1px FireFox沒法解釋簡寫, 
必須改爲 padding-top:5px; padding-right:4px; padding-bottom:3px; padding-left:1px; 

6. 消除ul、ol等列表的縮進 
消除ul、ol等列表的縮進樣式應寫成:list-style:none;margin:0px;padding:0px; 
其中margin屬性對IE有效,padding屬性對FireFox有效 

7. CSS透明 
IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。 
FF:opacity:0.6。 

8. CSS圓角 
IE:不支持圓角。 
FF: -moz-border-radius:4px,或者 
-moz-border-radius-topleft:4px; 
-moz-border-radius-topright:4px; 
-moz-border-radius-bottomleft:4px; 
-moz-border-radius- bottomright:4px;。 

9. CSS雙線凹凸邊框 
IE:border:2px outset;。 
FF: 
-moz-border-top-colors: #d4d0c8 white; 
-moz-border-left-colors: #d4d0c8 white; 
-moz-border-right-colors:#404040 #808080; 
-moz-border-bottom-colors:#404040 #808080; 

10. 濾鏡 
IE中支持使用濾鏡,而Firefox中不支持. 

11. 禁止選取網頁內容: 在IE中通常用js:obj.onselectstart=function(){return false;}; 而firefox用CSS:-moz-user-select:none;

相關文章
相關標籤/搜索