对于任何感兴趣的人,我已经编写了一个jQuery插件,它结合了
thetoolman(加上@MaffooClock/@cdmckay的评论)和@
Vladimir Kornea上面的想法。
用法:
$(document).disableBackspaceNavigation();
$('FORM').disableBackspaceNavigation();
$('#myForm').disableBackspaceNavigation();
$(document).disableBackspaceNavigation(true);
$(document).disableBackspaceNavigation({
confirm: true,
confirmString: "Are you sure you want to navigate away from this page?",
excludeSelector: "input, select, textarea, [contenteditable='true']",
includeSelector: ":checkbox, :radio, :submit"
});
插件:
$.fn.disableBackspaceNavigation = function (vOptions) {
var bBackspaceWasPressed = false,
o = $.extend({
confirm: (vOptions === true),
confirmString: "Are you sure you want to leave this page?",
excludeSelector: "input, select, textarea, [contenteditable='true']",
includeSelector: ":checkbox, :radio, :submit"
}, vOptions)
;
if (o.confirm) {
$(window).on('beforeunload', function () {
if (bBackspaceWasPressed) {
bBackspaceWasPressed = false;
return o.confirmString;
}
});
}
return this.each(function () {
$(this).bind("keydown keypress", function (e) {
var $target = $(e.target );
if (e.which === 8 ) {
bBackspaceWasPressed = true;
if (!o.confirm && (
!$target.is(o.excludeSelector) ||
$target.is(o.includeSelector) ||
e.target.disabled ||
e.target.readOnly
)) {
e.preventDefault();
}
}
});
});
};