IE與Firefox在JavaScript上的7個不同句法_Div+CSS教程
盡管那需要用長串的、沉悶的不同分支代碼來應(yīng)付不同瀏覽器的日子已經(jīng)過去,偶爾還是有必要做一些簡單的區(qū)分和目標(biāo)檢測來確保某塊代碼能在用戶的機(jī)器上正常運(yùn)行。在這篇文章中,作者介紹了7個在IE和Firefox中不同的JavaScript句法。
1. CSS "float" 值
訪問一個給定CSS 值的最基本句法是:object.style.property,使用駝峰寫法來替換有連接符的值,例如,訪問某個ID為"header"的<div>的 background-color值,我們使用如下句法:
document.getElementById("header").style.backgroundColor= "#ccc";
但由于"float"這個詞是一個JavaScript保留字,因此我們不能用 object.style.float來訪問,這里,我們可以在兩種瀏覽器中這么做:
在IE中這樣寫:
document.getElementById("header").style.styleFloat = "left";
在Firefox中這樣寫:
document.getElementById("header").style.cssFloat = "left";
2. 元素的推算樣式
JavaScript可以使用object.style.property句法,方便地在外部訪問和修改某個CSS樣式,但其限制是這些句法只能取出已設(shè)的行內(nèi)樣式或者直接由JavaScript設(shè)定的樣式。并不能訪問某個外部的樣式表。為了訪問元素的"推算"樣式,我們可以使用下面的代碼:
在IE中這樣寫:
var myObject = document.getElementById("header");
var myStyle = myObject.currentStyle.backgroundColor;
在Firefox中這樣寫:
var myObject = document.getElementById("header");
var myComputedStyle = document.defaultView.getComputedStyle(myObject, null);
var myStyle = myComputedStyle.backgroundColor;
3. 訪問元素的"class"
像"float"一樣,"class"是JavaScript的一個保留字,在這兩個瀏覽器中我們使用如下句法來訪問"class"。
在IE中這樣寫:
var myObject = document.getElementById("header");
var myAttribute = myObject.getAttribute("className");
在Firefox中這樣寫:
var myObject = document.getElementById("header");
var myAttribute = myObject.getAttribute("class");
This syntax would also apply using the setAttribute method.
4. 訪問<label>標(biāo)簽中的"for"
就第3點(diǎn)中所提到的,我們同樣需要使用不現(xiàn)的句法區(qū)分來訪問<label>標(biāo)簽中的"for":
在IE中這樣寫:
var myObject = document.getElementById("myLabel");
var myAttribute = myObject.getAttribute("htmlFor");
在Firefox中這樣寫:
var = document.getElementById("myLabel");
var myAttribute = myObject.getAttribute("for");
5. 獲取鼠標(biāo)指針的位置
計(jì)算出鼠標(biāo)指針的位置對你來說可能是非常少見的,不過當(dāng)你需要的時候,在IE和Firefox中的句法是不同的。這里所寫出的代碼將是最最基本的,也可能是某個復(fù)雜事件處理中的某一個部分。但他們可以解釋其中的異同點(diǎn)。同時,必須指出的是結(jié)果相對于Firefox,IE會有更在的不同,這種方法本身就是有BUG的。通常,這種不同可以用"拖動位置"來得到補(bǔ)償,但,那是另外一個主題的文章了: ) !
在IE中這樣寫:
var myCursorPosition = [0, 0];
myCursorPosition[0] = event.clientX;
myCursorPosition[1] = event.clientY;
在Firefox中這樣寫:
var myCursorPosition = [0, 0];
myCursorPosition[0] = event.pageX;
myCursorPosition[1] = event.pageY;
6. 獲取可見區(qū)域、窗口的大小
有時,我們會需要找到瀏覽器的可視位置的大小,通常我們稱之為"可見區(qū)域"。
在IE中這樣寫:
var myBrowserSize = [0, 0];
myBrowserSize[0] = document.documentElement.clientWidth;
myBrowserSize[1] = document.documentElement.clientHeight;
在Firefox中這樣寫:
var myBrowserSize = [0, 0];
myBrowserSize[0] = window.innerWidth;
myBrowserSize[1] = window.innerHeight;
7. Alpha 透明
好吧,這并不是一個JavaScript句法問題,而是源自于CSS的Alpha透明。但當(dāng)某個物體需要淡入/出則需要JavaScript來表現(xiàn),這是通過訪問CSS的Alpha透明設(shè)置來完成的,通常在一個循環(huán)中完成。你需要通過來修改的JavaScript的代碼如下::
在IE中這樣寫:
#myElement { filter: alpha(opacity=50); }
在Firefox中這樣寫:
#myElement { opacity: 0.5; }
在IE中這樣寫:
var myObject = document.getElementById("myElement");
myObject.style.filter = "alpha(opacity=80)";
在Firefox中這樣寫:
var myObject = document.getElementById("myElement"); myObject.style.opacity = "0.5";
還有什么不同的嗎?
這是作者(via: 7 JavaScript Differences Between Firefox & IE)個人根據(jù)自己的經(jīng)驗(yàn)整理的,而sofish在JavaScript上依然是一個新手。如果還有更多的不同,歡迎大家提出來,分享出來,共同學(xué)習(xí)!
- DIV+CSS設(shè)計(jì)的誤區(qū)
- CSS基礎(chǔ):常用CSS英文字體介紹
- IE6和IE7中border邊框斷線現(xiàn)象
- border:none;與border:0;的有什么不同?
- div+css下js對聯(lián)廣告不隨屏幕滾動的解決方法
- HTML元素的ID和Name屬性的區(qū)別
- divcss教程:深入了解css的行高Line Height屬性
- CSS文檔流,塊級元素和內(nèi)聯(lián)元素
- 5個你該知道的CSS3新技術(shù)
- 用正則表達(dá)式替換a標(biāo)記href值
- 30個優(yōu)秀的CSS導(dǎo)航和按鈕設(shè)計(jì)教程
- css中px和em有什么區(qū)別
Div+CSS教程Rss訂閱Div+Css教程搜索
Div+CSS教程推薦
猜你也喜歡看這些
- CSS實(shí)例:無懈可擊的CSS圓角技術(shù)!
- css圓角之有序列表dl、無序列表ul如何實(shí)現(xiàn)?
- DIVCSS實(shí)例:橙藍(lán)互換的CSS翻頁效果
- 用背景圖片實(shí)現(xiàn)CSS柱狀圖表一例
- CSS實(shí)例:如何讓無空格的長字符在IE和FF下面實(shí)現(xiàn)自動換行?
- DIV CSS網(wǎng)頁布局分析的兩個小例子
- DIV CSS布局實(shí)例:半透明陰影效果的實(shí)現(xiàn)
- CSS實(shí)例教程:用列表ul制作CSS橫向菜單的基礎(chǔ)知識
- CSS背景圖片background-image須注意路徑問題!
- CSSFloatLayoutBasics-CSS浮動布局基礎(chǔ)
- 相關(guān)鏈接:
- 教程說明:
Div+CSS教程-IE與Firefox在JavaScript上的7個不同句法。