我们的应用程序要求不允许用户使用F5刷新网页。
我已经实现了解决方案here但是我刚刚发现这在页面上的iframe中不起作用。
iframe是从telerik radeditor控件生成的。
我已尝试在包含radeditor的页面中执行以下操作。
$(function () {
$('#<%=RadEditor1.ClientID %>_contentIframe html').bind('keydown', function () {
if (window.event && window.event.keyCode == 116) {
window.event.cancelBubble = true;
window.event.returnValue = false;
window.event.keyCode = 0;
window.status = "F5 is disabled on all popups";
return false;
}
});
});
然而它无效。
我遗失的iframe有什么特别之处吗?
答案 0 :(得分:5)
我知道您希望阻止用户在页面上工作时丢失数据,我建议采用不同的解决方案。为什么不在他们离开页面时挂钩,并提示他们是否打算这样做?
Best way to detect when a user leaves a web page?
当邮件尚未保存/尚未发送时,Gmail会使用此方法。这将帮助您涵盖许多场景,让您的用户满意,并且如果有人愿意,仍然允许F5工作。
答案 1 :(得分:2)
此方法一致。
$(function () {
function addF5Handler(){
el = $('body', $('#myframe').contents());
if(el.length != 1) {
setTimeout(addF5Handler, 100);
return;
}
$($('#myframe').get(0).contentWindow.document).keydown(function () {
var myWindow = $('#myframe').get(0).contentWindow;
if (myWindow.event && myWindow.event.keyCode == 116) {
myWindow.event.cancelBubble = true;
myWindow.event.returnValue = false;
myWindow.event.keyCode = 0;
myWindow.status = "F5 is disabled on all popups";
return false;
}
});
}
addF5Handler();
});
答案 2 :(得分:1)
我认为你唯一的选择就是:
$(window).on('beforeunload', function () {
return 'Leave?';
});
将其放入iFrame页面。