簡體   English   中英

使用JavaScript阻止刷新/重新加載頁面

[英]Prevent refreshing / reloading a page with JavaScript

我知道這不推薦,但我需要它,因為我在頁面內部有一個iframe,其中包含實際內容,我希望當用戶點擊刷新按鈕時,iframe不會重新加載整個頁面。

我知道我必須調用onunload / onbeforeunload事件,但我不想問我是否要離開窗口,只是不要。

那可能嗎? 我已經處理了F5鍵,但我也想阻止按鈕刷新。

更新:我5年前寫過這個,瀏覽器現在做了不同的東西,你仍然可以用它來測試你的瀏覽器集,但你的經驗可能與我以前的研究不同。

嘗試使用jQuery,因為我很懶。

從理論上講,防止默認行為應該阻止事件做任何應該做的事情。 它不適用於我的示例中的事件,並且在不同的瀏覽器中具有不同的結果。 我將Math.random()放入以確定頁面是否已重新加載。 因為不同的瀏覽器做不同的事情,我強烈建議不要在生產環境中使用它。

<body>
<p></p>
<script type="text/javascript">
    $('p').append(Math.random());

    $(window).bind({
        beforeunload: function(ev) {
            ev.preventDefault();
        },
        unload: function(ev) {
            ev.preventDefault();
        }
    });
</script>
</body>

使用CTRL-R或F5或重新加載按鈕:

  • Safari:什么都不做
  • Chrome:什么都不做
  • Opera 10&11:什么都不做
  • Firefox 7.x:顯示帶有兩個按鈕的特殊提示:
    • 留在頁面 - 不重新加載頁面
    • 離開頁面 - 重新加載頁面
  • IE7和IE8:顯示帶有兩個按鈕的提示:
    • 確定 - 重新加載頁面
    • 取消 - 不重新加載頁面
  • IE9:顯示帶有兩個按鈕的提示:
    • 離開此頁面 - 重新加載
    • 留在這個頁面 - 不重新加載

Firefox提示(你可以告訴我在Mac上測試過它)

Firefox提示

IE7和IE8提示

IE7和IE8提示

IE9提示

IE9提示

結束時:

是的,我沒有測試IE6,我刪除了安裝了它的VM,我沒有安裝了IE10 beta的虛擬機,所以你也不幸。

您也可以嘗試使用cancelBubble和stopPropagation,或者可能返回false; 可能會揭示有用的東西 我對Jordan的答復感到失望,你不應該試圖覆蓋默認值,所以我在這里結束我的實驗。

在onsubmit事件中返回false會阻止表單被提交並保留在同一頁面中而無需任何用戶交互。

例如..

當具有輸入字段的表單為空並提交此javascript檢查以進行驗證並相應返回時...如果返回false則不執行任何操作(即頁面未刷新或重定向)。

如果驗證正常,如果返回true,則執行表單操作。

function validateForm(Str) {
mystring=document.getElementById('inputid').value; 
  if(!mystring.match(/\S/)){
    alert ('Please Enter a String.Field cannot be empty');
  return false;
  }else{
    return true;
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM