最近在玩 iframe 的時候想到如果使用者直接按 F5 重新整理網頁,不就會遺失 iframe 的瀏覽紀錄了嗎?於是我就把矛頭指向攔截瀏覽器 F5 事件的方向去解。
我這邊的做法是在父層與子層皆加上一段 JavaScript 來攔截,讓瀏覽器只重整子層的網頁。
- 父層:
var iframe = $('#external-frame')[0]; document.onkeydown = function (e) { e = window.event || e; var keycode = e.keyCode || e.which; if (keycode == 116) { // ie if (window.event) { try { e.keyCode = 0; } catch (e) { } e.returnValue = false; } // ff else { e.preventDefault(); } iframe.contentWindow.location.reload(); } };
- 子層:
document.onkeydown = function (e) { e = window.event || e; var keycode = e.keyCode || e.which; if (keycode == 116) { // ie if (window.event) { try { e.keyCode = 0; } catch (e) { } e.returnValue = false; } // ff else { e.preventDefault(); } window.location.reload(); } };