解讀IE和firefox下JScript和HREF的執(zhí)行順序
很久都沒(méi)有寫(xiě)關(guān)于代碼方面的文章了。主要原因還是因?yàn)樽罱墓ぷ鞫技性谛枨蠓治龇矫?,沒(méi)有了現(xiàn)實(shí)中的感觸,就沒(méi)有了寫(xiě)作的動(dòng)機(jī)。討論一個(gè)關(guān)于JScript執(zhí)行順序的問(wèn)題。示例代碼如下:
a.htm
<A onmouseup="func('onmouseup')" href="b.htm">Click Me!</A> <A onclick="func2('onclick')" href="d.htm">Click Me!</A> <SPAN id=msg></SPAN>
<SCRIPT>
function func(str)
{
msg(str);
window.location.href="c.htm";
}
function msg(str)
{
document.getElementById("msg").innerText=str; //A
//alert(str); //B
}
function func2(str)
{
msg(str);
window.location.href="e.htm";
}
</SCRIPT>
在msg(str)有個(gè)注釋掉的行,試驗(yàn)的時(shí)候分別執(zhí)行A和B。
| A | B | |||
| onmouseup | onclick | onmouseup | onclick | |
| IE | b.htm | d.htm | c.htm | d.htm |
| FireFox | c.htm->b.htm | e.htm->d.htm | c.htm->b.htm | e.htm->d.htm |
上表主要列出了兩個(gè)瀏覽器中的執(zhí)行順序,紅色代表頁(yè)面腳本跳轉(zhuǎn)的頁(yè)面,藍(lán)色是Anchor標(biāo)簽的href屬性。從上面可以看出,對(duì)于FireFox,始終先執(zhí)行頁(yè)面腳本,然后瀏覽器再跳轉(zhuǎn)。而IE里面執(zhí)行的過(guò)程卻有差別:
1、使用后退按鈕直接回到a.htm,即頁(yè)面只執(zhí)行了一個(gè)跳轉(zhuǎn);
2、在使用alert中斷的情況下,onmouseup執(zhí)行了頁(yè)面腳本中的跳轉(zhuǎn)。
從上可以看出,
1、對(duì)于FireFox而言,頁(yè)面腳本執(zhí)行順序始終優(yōu)先于瀏覽器內(nèi)嵌腳本執(zhí)行順序,這個(gè)已經(jīng)很明顯了。
2、IE中,HREF的執(zhí)行順序?yàn)閛nmouseup->href->onclick。真的嗎?
為了更加明確2中的執(zhí)行順序,我們繼續(xù)分析onclick和href的執(zhí)行順序關(guān)系。在上述例子中,onclick是采用調(diào)入的方式執(zhí)行的。如果a. 我們使用以下的測(cè)試代碼:
<a href="d.htm" onclick="return false;">Click Me!</a>
發(fā)現(xiàn)HREF不能被執(zhí)行。
b. 如果我們使用以下測(cè)試代碼:
<a href="d.htm" onclick="window.location.href='e.htm';return false;">Click Me!</a>
發(fā)現(xiàn)依舊執(zhí)行HREF的d.htm,而不是onclick中的e.htm。
c. 如果我們使用以下測(cè)試代碼:
<a href="d.htm" onclick="msg('onclick');return false;">Click Me!</a>( function msg()的代碼如上)
發(fā)現(xiàn)執(zhí)行了function msg(),而HREF不被觸發(fā)。
暈了。IE的確是個(gè)詭異的東西。誰(shuí)能幫忙解釋一下b例中的現(xiàn)象?
- 使用jscript實(shí)現(xiàn)二進(jìn)制讀寫(xiě)腳本代碼
- JScript中調(diào)用ActiveX獲取訪客網(wǎng)卡MAC地址實(shí)現(xiàn)代碼
- 使用 JScript 創(chuàng)建 .exe 或 .dll 文件的方法
- JScript 腳本實(shí)現(xiàn)文件下載 一般用于下載木馬
- JScript中使用ADODB.Stream判斷文件編碼的代碼
- 在JScript中使用緩存技術(shù)的實(shí)際代碼
- 解決 JScript 中使用日期類型數(shù)據(jù)時(shí)出現(xiàn)類型錯(cuò)誤的問(wèn)題
- jscript讀寫(xiě)二進(jìn)制文件的方法
相關(guān)文章
JS定時(shí)器使用,定時(shí)定點(diǎn),固定時(shí)刻,循環(huán)執(zhí)行詳解
下面小編就為大家?guī)?lái)一篇JS定時(shí)器使用,定時(shí)定點(diǎn),固定時(shí)刻,循環(huán)執(zhí)行詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05
判斷是否存在子節(jié)點(diǎn)的實(shí)現(xiàn)代碼
下面小編就為大家?guī)?lái)一篇判斷是否存在子節(jié)點(diǎn)的實(shí)現(xiàn)代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05
符合W3C網(wǎng)頁(yè)標(biāo)準(zhǔn)的iframe標(biāo)簽的使用方法
符合W3C網(wǎng)頁(yè)標(biāo)準(zhǔn)的iframe標(biāo)簽的使用方法...2007-07-07
超強(qiáng)的IE背景圖片閃爍(抖動(dòng))的解決辦法
超強(qiáng)的IE背景圖片閃爍(抖動(dòng))的解決辦法...2007-09-09
JS監(jiān)聽(tīng)和響應(yīng)DOM元素的變化的方法
在前端開(kāi)發(fā)中,處理動(dòng)態(tài)變化的 DOM(文檔對(duì)象模型)很是常見(jiàn)的需求,比如自動(dòng)化測(cè)試中,可能需要監(jiān)控 DOM 變化來(lái)驗(yàn)證測(cè)試條件,在用戶填寫(xiě)表單時(shí),某些字段需要即時(shí)驗(yàn)證等,所以本文給大家介紹了JS監(jiān)聽(tīng)和響應(yīng)DOM元素的變化的方法,需要的朋友可以參考下2024-09-09
用javascript實(shí)現(xiàn)在小方框中瀏覽大圖的代碼
用javascript實(shí)現(xiàn)在小方框中瀏覽大圖的代碼...2007-08-08
javascript禁用鍵盤(pán)功能鍵讓右擊及其他鍵無(wú)效
禁用鍵盤(pán)功能鍵的方法有很多,在本文為大家詳細(xì)介紹下,使用javascript如何實(shí)現(xiàn)禁用鍵盤(pán)功能鍵及其他鍵的方法,感興趣的朋友可以參考下2013-10-10

