鷹翔宇空

          學(xué)習(xí)和生活

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks
          前段時間,一直在做web項目,總是出現(xiàn)一個問題:用戶輸入了一些內(nèi)容后,不小心關(guān)掉了瀏覽器窗口,或是跳轉(zhuǎn)到了其它頁面,沒有任何的提示,但是數(shù)據(jù)就沒有了,其實跳轉(zhuǎn)還好辦,難就難在關(guān)閉瀏覽器時要給出一個提示,很是頭痛,上網(wǎng)查了很多東東,但都沒有結(jié)果,,很是郁悶。
          今天無意識的在關(guān)閉一篇沒有寫完的隨筆時,突然發(fā)現(xiàn)有“如果不保存就會丟失內(nèi)容”的提示。很是激動。就查看了原文件,雖然很多亂碼,但好在還有一部分可讀的,終于讓我發(fā)現(xiàn)了onbeforeunload事件,很是開心。在BlogJava中,它是這樣用的:
          <script language="javascript">
            g_blnCheckUnload = true;
            function RunOnBeforeUnload() {
               if (g_blnCheckUnload) {window.event.returnValue = 'You will lose any unsaved content';  
               } 
            }
          </script>
          <body  onbeforeunload="RunOnBeforeUnload()">
          </body>
          這樣每次關(guān)閉瀏覽器窗口或涮新頁面時,都要觸發(fā)onbeforeunload這個事件,這樣可以對用戶進(jìn)行提示,避免不必要的遺憾。

          我上網(wǎng)又查了一些這個事件的用法,感覺還是http://www.surfchen.org/?p=54這篇寫得最清楚了,摘抄如下:
          onbeforeunload事件:

          注:三大主流瀏覽器中firefox和IE都支持onbeforeunload事件,opera尚未支持。

          用法:

          • object.onbeforeunload = handler
          • <element onbeforeunload = “handler” … ></element>

          描述:
          事件觸發(fā)的時候彈出一個有確定和取消的對話框,確定則離開頁面,取消則繼續(xù)待在本頁。
          handler可以設(shè)一個返回值作為該對話框的顯示文本。

          觸發(fā)于:

          • 關(guān)閉瀏覽器窗口
          • 通過地址欄或收藏夾前往其他頁面的時候
          • 點擊返回,前進(jìn),刷新,主頁其中一個的時候
          • 點擊 一個前往其他頁面的url連接的時候
          • 調(diào)用以下任意一個事件的時候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
          • 當(dāng)用window open打開一個頁面,并把本頁的window的名字傳給要打開的頁面的時候。
          • 重新賦予location.href的值的時候。
          • 通過input type=”submit”按鈕提交一個具有指定action的表單的時候。

          可以用在以下元素:
          BODY, FRAMESET, window

          平臺支持:
          IE4+/Win, Mozilla 1.7a+, Netscape 7.2+, Firefox0.9+

          posted on 2006-01-06 09:46 TrampEagle 閱讀(7074) 評論(6)  編輯  收藏 所屬分類: 技術(shù)文摘

          Feedback

          # re: 如何避免不小心關(guān)掉web瀏覽器窗口 2006-01-06 10:25 zhizhu
          我也遇到同樣的問題,終于解決了,哈哈。謝謝你了
          以前想通過javascript的histroy事件來解決,但是如果用"確定取消"對話框時,點取消還會執(zhí)行下一個頁面,不知道為什么.  回復(fù)  更多評論
            

          # re: 如何避免不小心關(guān)掉web瀏覽器窗口 2006-01-06 12:34 TrampEagle
          不用謝,呵呵,如果真要謝的話,其實應(yīng)該感謝BlogJava,我也是從它上面獲取到的。不過從另一方面也驗證了“處處留心皆學(xué)問”這個真理。
          希望我們都能把自己工作過程中解決難題(或問題)的心得體會拿出來共享,使得他人少走彎路,或避免浪費太多的時間。互相交流,共同進(jìn)步!  回復(fù)  更多評論
            

          # re: 如何避免不小心關(guān)掉web瀏覽器窗口 2006-01-12 11:24 BlueO2
          我以前有過這種需求,捕獲用戶關(guān)閉瀏覽器 找到過此方法,可是還是無法很好的滿足.因為我要明確的知道是關(guān)閉瀏覽器,而不是畫面遷徙等如你列出的那些觸發(fā)事件.不知道各位有什么辦法判斷沒有.  回復(fù)  更多評論
            

          # re: 如何避免不小心關(guān)掉web瀏覽器窗口 2006-01-12 17:20 TrampEagle
          TO:BlueO2
          你老兄的問題是不是在頁面上點擊其它連接時不用提示就跳轉(zhuǎn)至另個頁面阿?
          我上網(wǎng)搜了很久也沒有搜出關(guān)閉瀏覽器的事件碼,也不能直接通過判斷來處理,但可以這樣做:
          <script language="javascript">
          var g_blnCheckUnload = true;
          function RunOnBeforeUnload() {
          if (g_blnCheckUnload) {window.event.returnValue = 'You will lose any unsaved content';
          }
          }
          function turnToOtherPage(){
          g_blnCheckUnload = false;
          //在此處添加你自己需要處理的方法,或頁面跳轉(zhuǎn)的連接
          g_blnCheckUnload = true;
          }
          </script>
          <body onbeforeunload="RunOnBeforeUnload()">
          <input type="button" name="TrampEagle" value="TurnToPage" onclick="turnToOtherPage()">
          </body>
          如果還有什么問題,請及時聯(lián)系,祝你早日解決問題!!!
            回復(fù)  更多評論
            

          # re: 如何避免不小心關(guān)掉web瀏覽器窗口 2007-07-26 16:03 真有米
          妙!妙~~我可是找了好久  回復(fù)  更多評論
            

          # re: 如何避免不小心關(guān)掉web瀏覽器窗口[未登錄] 2011-04-19 15:02 匿名
          @TrampEagle
          恩,是的。  回復(fù)  更多評論
            

          主站蜘蛛池模板: 鹿邑县| 合山市| 石家庄市| 济源市| 江达县| 琼中| 南投市| 庆云县| 龙山县| 晋城| 仙游县| 原阳县| 大余县| 武陟县| 永兴县| 广州市| 湖南省| 云南省| 五指山市| 永川市| 怀集县| 北安市| 澎湖县| 江陵县| 全椒县| 镇坪县| 兖州市| 博野县| 汨罗市| 阿瓦提县| 弥勒县| 博罗县| 太白县| 汾西县| 临武县| 新化县| 保山市| 兴和县| 泗洪县| 海安县| 寿宁县|