我知道這不是建議的,但我需要它,因爲我有一個頁面內的iframe具有實際內容,我希望當用戶點擊刷新按鈕,iframe重新加載不完整頁。防止用JavaScript刷新/重新加載頁面
我知道我必須致電onunload
/onbeforeunload
事件,但我不想問我是否想離開窗戶,就是不要。
這可能嗎?我已經處理了F5鍵,但我也想防止從按鈕刷新。
我知道這不是建議的,但我需要它,因爲我有一個頁面內的iframe具有實際內容,我希望當用戶點擊刷新按鈕,iframe重新加載不完整頁。防止用JavaScript刷新/重新加載頁面
我知道我必須致電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或刷新鍵:
Firefox的提示(你可以告訴我測試它在Mac上)
IE7 & IE8提示
IE9提示
最後:
是的,我沒有測試IE6,我刪除了我的VM這安裝了它,我沒有安裝IE10 beta的虛擬機,所以你也沒有運氣。
您也可以嘗試使用cancelBubble和stopPropagation,或者返回false;可能會揭示出有用的東我對喬丹的回覆感到失望,你不應該試圖重寫默認設置,所以我在這裏總結我的實驗。
閱讀關於MDN的文章preventDefault() https://developer.mozilla.org/zh/DOM/event.preventDefault – paulj
在onsubmit事件返回假防止形式被提交併停留在同一頁面無需任何用戶交互..
例如..
當具有輸入字段的表單是空的,並提交這個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;
}
}
這聽起來像(可悲的)'onbeforeunload'事件的情況。您可以使用它來提示用戶並詢問他們是否想離開該頁面(刷新視爲「離開」該頁面)。 – 2011-10-24 19:39:48
您不能也不應該覆蓋用戶從瀏覽器期望的行爲。如果您的應用程序需要「刷新」功能,其功能與「刷新」按鈕的常規功能不同,請在應用程序的用戶界面中構建一個刷新按鈕。這是非常常見的(例如,請參閱Gmail),用戶會比您試圖覆蓋其預期的瀏覽器行爲更好地理解它。 –
@MattMcDonald是的,我知道,但我不想問用戶,只需刷新iframe並取消刷新頁面事件。 – xuso