[英]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或重新加載按鈕:
Firefox提示(你可以告訴我在Mac上測試過它)
IE7和IE8提示
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.