8.window.event問題
問題說明:window.event 只能在IE下運行,而不能在Firefox下運行,這是因為Firefox的event只能在事件發(fā)生的現(xiàn)場使用 。
解決方法:在事件發(fā)生的函數(shù)上加上event參數(shù),在函數(shù)體內(nèi)(假設(shè)形參為evt)使用 var myEvent = evtevt:(window.eventwindow.event:null)
示例:
復(fù)制代碼 代碼如下:
input type="button" onclick="doSomething(event)"/
script language="javascript"
function doSomething(evt) {
var myEvent = evtevt:(window.eventwindow.event:null)
...
}
9.event.x與event.y問題
問題說明:IE下,even對象有x、y屬性,但是沒有pageX、pageY屬性;Firefox下,even對象有pageX、pageY屬性,但是沒有x、y屬性 。
解決方法:var myX = event.xevent.x : event.pageX; var myY = event.yevent.y:event.pageY;
如果考慮第8條問題,就改用myEvent代替event即可 。
10.event.srcElement問題
問題說明:IE下,even對象有srcElement屬性,但是沒有target屬性;Firefox下,even對象有target屬性,但是沒有srcElement屬性 。
解決方法:使用srcObj = event.srcElementevent.srcElement : event.target;
如果考慮第8條問題,就改用myEvent代替event即可 。
11.window.location.href問題
問題說明:IE或者Firefox2.0.x下,可以使用window.location或window.location.href;Firefox1.5.x下,只能使用window.location 。
解決方法:使用 window.location 來代替 window.location.href 。當(dāng)然也可以考慮使用 location.replace()方法 。
12.模態(tài)和非模態(tài)窗口問題
問題說明:IE下,可以通過showModalDialog和showModelessDialog打開模態(tài)和非模態(tài)窗口;Firefox下則不能 。
解決方法:直接使用 window.open(pageURL,name,parameters) 方式打開新窗口 。
如果需要將子窗口中的參數(shù)傳遞回父窗口,可以在子窗口中使用window.opener來訪問父窗口 。如果需要父窗口控制子窗口的話,使用var subWindow = window.open(pageURL,name,parameters); 來獲得新開的窗口對象 。
13.frame和iframe問題
以下面的frame為例:
frame src="/images/defaultpic.gif" /
(1)訪問frame對象
IE:使用window.frameId或者window.frameName來訪問這個frame對象;
Firefox:使用window.frameName來訪問這個frame對象;
解決方法:統(tǒng)一使用 window.document.getElementById("frameId") 來訪問這個frame對象;
(2)切換frame內(nèi)容
在IE和Firefox中都可以使用window.document.getElementById("frameId").src = "https://www.rkxy.com.cn/dnjc/xxx.html"或window.frameName.location = "xxx.html"來切換frame的內(nèi)容;
如果需要將frame中的參數(shù)傳回父窗口,可以在frame中使用parent關(guān)鍵字來訪問父窗口 。
14.body載入問題
問題說明:Firefox的body對象在body標(biāo)簽沒有被瀏覽器完全讀入之前就存在;而IE的body對象則必須在body標(biāo)簽被瀏覽器完全讀入之后才存在 。
[注] 這個問題尚未實際驗證,待驗證后再來修改 。
[注] 經(jīng)驗證,IE6、Opera9以及FireFox2中不存在上述問題,單純的JS腳本可以訪問在腳本之前已經(jīng)載入的所有對象和元素,即使這個元素還沒有載入完成 。
15. 事件委托方法
問題說明:IE下,使用 document.body.onload = inject; 其中function inject()在這之前已被實現(xiàn);在Firefox下,使用 document.body.onload = inject();
解決方法:統(tǒng)一使用 document.body.onload=new Function('inject()'); 或者 document.body.onload = function(){/* 這里是代碼 */}
[注意] Function和function的區(qū)別
16.訪問的父元素的區(qū)別
問題說明:在IE下,使用 obj.parentElement 或 obj.parentNode 訪問obj的父結(jié)點;在firefox下,使用 obj.parentNode 訪問obj的父結(jié)點 。
解決方法:因為firefox與IE都支持DOM,因此統(tǒng)一使用obj.parentNode 來訪問obj的父結(jié)點 。
17.cursor:hand VS cursor:pointer
推薦閱讀
- 小米妙享中心在哪
- 手機信息怎么恢復(fù)之前的信息
- oppo手機來電秀怎么關(guān)掉
- 喜歡讀書的人是不是在逃避現(xiàn)實
- 王秋雨和朱雅瓊在一起幾年
- wps夜間模式在哪里切換
- 針對firefox ie6 ie7 ie8的css樣式hack
- win7odbc數(shù)據(jù)源在哪
- IE下Css圓角沒有的解決方法
- oppo手機免打擾模式在哪里設(shè)置
