JS技巧:7個(gè)在IE和Firefox中不同的JavaScript語(yǔ)法
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
盡管那需要用長(zhǎng)串的、沉悶的不同分支代碼來(lái)應(yīng)付不同瀏覽器的日子已經(jīng)過(guò)去,偶爾還是有必要做一些簡(jiǎn)單的區(qū)分和目標(biāo)檢測(cè)來(lái)確保某塊代碼能在用戶的機(jī)器上正常運(yùn)行。在這篇文章中,*介紹了7個(gè)在IE和Firefox中不同的JavaScript句法。 1. CSS "float" 值 訪問(wèn)一個(gè)給定CSS 值的最基本句法是:object.style.property,使用駝峰寫法來(lái)替換有連接符的值,例如,訪問(wèn)某個(gè)ID為"header"的<div>的 background-color值,我們使用如下句法: document.getElementById("header").style.backgroundColor= "#ccc"; 但由于"float"這個(gè)詞是一個(gè)JavaScript保留字,因此我們不能用 object.style.float來(lái)訪問(wèn),這里,我們可以在兩種瀏覽器中這么做: 在IE中這樣寫: document.getElementById("header").style.styleFloat = "left"; 在Firefox中這樣寫: document.getElementById("header").style.cssFloat = "left"; 2. 元素的推算樣式 JavaScript可以使用object.style.property句法,方便地在外部訪問(wèn)和修改某個(gè)CSS樣式,但其限制是這些句法只能取出已設(shè)的行內(nèi)樣式或者直接由JavaScript設(shè)定的樣式。并不能訪問(wèn)某個(gè)外部的樣式表。為了訪問(wèn)元素的"推算"樣式,我們可以使用下面的代碼: 在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. 訪問(wèn)元素的"class" 像"float"一樣,"class"是JavaScript的一個(gè)保留字,在這兩個(gè)瀏覽器中我們使用如下句法來(lái)訪問(wèn)"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. 訪問(wèn)<label>標(biāo)簽中的"for" 就第3點(diǎn)中所提到的,我們同樣需要使用不現(xiàn)的句法區(qū)分來(lái)訪問(wèn)<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)指針的位置對(duì)你來(lái)說(shuō)可能是非常少見(jiàn)的,不過(guò)當(dāng)你需要的時(shí)候,在IE和Firefox中的句法是不同的。這里所寫出的代碼將是最最基本的,也可能是某個(gè)復(fù)雜事件處理中的某一個(gè)部分。但他們可以解釋其中的異同點(diǎn)。同時(shí),必須指出的是結(jié)果相對(duì)于Firefox,IE會(huì)有更在的不同,這種方法本身就是有BUG的。通常,這種不同可以用"拖動(dòng)位置"來(lái)得到補(bǔ)償,但,那是另外一個(gè)主題的文章了: ) ! 在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. 獲取可見(jiàn)區(qū)域、窗口的大小 有時(shí),我們會(huì)需要找到瀏覽器的可視位置的大小,通常我們稱之為"可見(jiàn)區(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 透明 好吧,這并不是一個(gè)JavaScript句法問(wèn)題,而是源自于CSS的Alpha透明。但當(dāng)某個(gè)物體需要淡入/出則需要JavaScript來(lái)表現(xiàn),這是通過(guò)訪問(wèn)CSS的Alpha透明設(shè)置來(lái)完成的,通常在一個(gè)循環(huán)中完成。你需要通過(guò)來(lái)修改的JavaScript的代碼如下:: 在IE中這樣寫: #myElement { filter: alpha(opacity=50); } 在Firefox中這樣寫: #myElement { opacity: 0.5; } 在IE中這樣寫: var myObject = document.getElementById("myElement"); myObject.style.filter = "alpha(opacity=80)"; $False$ 在Firefox中這樣寫: var myObject = document.getElementById("myElement"); myObject.style.opacity = "0.5"; 還有什么不同的嗎?
這是作者個(gè)人根據(jù)自己的經(jīng)驗(yàn)整理的,而sofish在JavaScript上依然是一個(gè)新手。如果還有更多的不同,歡迎大家提出來(lái),分享出來(lái),共同學(xué)習(xí)! 該文章在 2010/8/17 23:14:54 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |