瀏覽器的兼容問題/原因[轉貼]

以前引用過經典狼大狗的一篇關於JS在IE/ff的兼容性的文章,雖然很實用,但是僧多粥少啊! 剛好經典有置頂貼裏面有關於這方面的內容,就轉過來了。稍微整理了下! 關於用腳本設置onload事件句柄

<body> <script> document.body.οnlοad=function(){alert("!")} </script> </body>

在IE、Opera均正常有效,唯獨FF既不執行,也不報錯,因爲在FF,document.body.onload是undefined(未定義),把一個函數賦值給undefined 既不會發生什麼事情,也不算出錯。 解決方法:

<body> <script> window.οnlοad=function(){alert("!")} </script> </body>

關於浮動代碼和 documentElement / body 常常有人提問,爲什麼 漂浮廣告 / 對聯代碼 在 xHTML 1.1 DTD 文件頭 / FF 下不能使用 這是因爲,按照標準來說,我們看到的窗體的滾動條不應該是 body 的,而是 HTML 的(也就是 document.documentElement 對象) 所以,解決辦法是,把以前不標準的代碼中, document.body.scrollTop 或者類似的代碼變換爲 document.documentElement.scrollTop 同名的dom函數(getElementsByName)在ie和firefox下不同表現 [ 可以先修改再運行 ] IE下,用的getElementsByName結果,ID的權值大於name,但是在FF下卻不是的 節點在ie和firefox下的不同 節點在ie和firefox下的不同: childNodes、firstChild、nextSibling、previousSibling [ 可以先修改再運行 ] 取得元素的真實css屬性

/** *取得元素的真實css屬性 *written in 06.7 sheneyan */ function gs(d,a){   if (d.currentStyle){      var curVal=d.currentStyle[a]   }else{      var curVal=document.defaultView.getComputedStyle(d, null)[a]   }    return curVal; }

png半透明圖片作背景的兼容方案 png半透明圖片作背景的兼容方案(IE5.5+,Firefox1.5,Opera9通過) 爲每個png背景建一個這樣的類:

/*non IE*/ html>body .pngbg1 {     background: url(../img/toumbg.png) repeat; } /*IE*/ html .pngbg1 {     filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="img/toumbg.png"); }

然後設置容器的class="pngbg1"即可. (備註:"background: url()"的路徑相對於文檔, "AlphaImageLoader"的路徑相對於站點根目錄) 在IE下可以直接這樣用: Js的實現方式見另外一篇文章:JS小技巧總彙 ie/firefox:禁止選擇文字 在ie下,禁止用戶選擇內容,用腳本可以實現: [ 可以先修改再運行 ] 而在firefox,這樣子的寫法沒法實現相同的功能,剛纔google了一下,找到一個類似的功能,不過居然是在css下實現的:

<style> html *{-moz-user-select: none;} </style> <body> 試試看能否選擇這些文字? </body>

ie/ff腳本取得樣式表屬性float的異同 ie下:style.styleFloat ff下:style.cssFloat [ 可以先修改再運行 ] 鼠標按鍵常量在ie和firefox下的不同 [ 可以先修改再運行 ] FF下。左鍵返回值是0,IE下返回值是1,但是右鍵都是2,FF居然有跳級。 IE 與 FF 對透明背景的元素表現不同 背景透明的元素( 底下也沒有背景 )在 IE 中是點不到的, FF 中就可以 [ 可以先修改再運行 ] 另外: FF 下沒有 event 用 arguments[0] FF 下沒有 srcElement 用 target FF 下沒有 parentElement 用 parentNode 總結:

function obj_event_onsomething(e){ var e=window.event?window.event:e; var srcEle=e.srcElement?e.srcElement:e.target; var theObjectYouWant=srcEle.parentNode; }

document.all.tags=document.getElementsByTagName 以前一直都認爲document.all是IE 纔有的東西,但是FF2.0居然頁支持
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章