使用onbeforeunload屬性后的副作用

這個(gè)unbeforeunload的具體用法我就不說了,反正幾乎能引起當(dāng)前頁面發(fā)生跳轉(zhuǎn)的任何動(dòng)作,都會(huì)觸發(fā)這個(gè)事件。并且它先于unload事件被觸發(fā),如果在其的事件處理函數(shù)里面向event.returnValue屬性賦值非空字符串,就會(huì)出現(xiàn)一個(gè)如上圖的窗口(代碼如下)。








至于這個(gè)窗口是做什么用的,窗口上系統(tǒng)提示的文字(第1行和第3行)已經(jīng)說的非常清楚了。那么使用這個(gè)事件到底有什么問題呢?
我們知道引起當(dāng)前頁面發(fā)生條轉(zhuǎn)主要3類事件:
1、對(duì)瀏覽器窗口的操作,比如關(guān)閉瀏覽器、go home、backward、forward和refresh等;
2、對(duì)于網(wǎng)頁的Navigatie操作,比如點(diǎn)擊鏈接、在地址欄中執(zhí)行新的地址、頁面表單提交到非當(dāng)前頁面等;
3、腳本代碼引起的頁面Navigate操作,比如執(zhí)行navigate、locatoin方法(replace, reload, assign)和修改location屬性(href, search)等。
以上的1-2類操作引起onbeforeunload的事件,使用起來基本沒有任何的問題,可是執(zhí)行第3類頁面條轉(zhuǎn)操作卻有點(diǎn)小問題。就是在上圖的窗口出現(xiàn)后,如果點(diǎn)選"OK",確實(shí)就OK,頁面正確跳轉(zhuǎn)了??墒侨绻@個(gè)時(shí)候,我們點(diǎn)選"Cancel",卻會(huì)出現(xiàn)一個(gè)腳本異常,如下圖:
解決方法就是把腳本調(diào)用try一下,但這似乎是IE的一個(gè)bug的說。













相關(guān)文章
實(shí)現(xiàn)隔行換色效果的兩種方式【實(shí)用】
本文主要介紹了實(shí)現(xiàn)隔行顏色交替 鼠標(biāo)經(jīng)過高亮顏色的兩種方式的具體實(shí)例,有助于理解和使用。方案一:純CSS編寫;方案二:js代碼編寫。需要的朋友可以參考下2016-11-11JS獲取scrollHeight問題想到的標(biāo)準(zhǔn)問題
如果沒有文檔聲明可以用 document.body.scrollHeight,如果有文檔聲明必須用 document.documentElement.scrollHeight關(guān)于這方面的東西2007-05-05JavaScript判斷對(duì)象和數(shù)組的兩種方法
這篇文章主要介紹了JavaScript判斷對(duì)象和數(shù)組的兩種方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05JS面向?qū)ο缶幊獭狤S6 中class的繼承用法詳解
這篇文章主要介紹了JS面向?qū)ο缶幊獭狤S6 中class的繼承用法,結(jié)合實(shí)例形式詳細(xì)分析了ES6中class繼承的相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2020-03-03webpack4 SplitChunks實(shí)現(xiàn)代碼分隔詳解
這篇文章主要介紹了webpack4 SplitChunks實(shí)現(xiàn)代碼分隔詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05js this函數(shù)調(diào)用無需再次抓獲id,name或標(biāo)簽名
this就是你當(dāng)前要執(zhí)行的js所抓獲的節(jié)點(diǎn),這樣在js里就可以不用document.getElement之類的寫法來抓獲id,name或標(biāo)簽名,具體示例如下2014-03-03