我正在asp.net页面上使用ptTimeSelect控件。我有一些javascript / jquery来处理onbeforeunload事件并在用户离开页面之前显示一条消息。但是,TimeSelect控件似乎也会触发onbeforeunload事件(在IE 8中,我认为它不会在firefox中执行)。当用户实际上没有离开页面时,这导致关于离开页面的弹出窗口令人困惑。
有人知道造成这种情况的原因是什么吗?以及如何在单击Time Select控件时停止触发事件 - 但在用户实际离开页面时保持触发?
这是控件: http://pttimeselect.sourceforge.net/doc/files/jquery-ptTimeSelect-js.html
答案 0 :(得分:1)
我在Stack Overflow帖子中找到了解决方案:
Internet Explorer calling window.onbeforeunload on window.open and AJAX calls
似乎问题是在IE中,页面上的任何链接在点击时都会触发onbeforeunload,除非它是指向同一页面的链接。
在每个链接的onclick事件中添加“return false”(ptTimeSelect控件中的大多数元素都是触发javascript但不会去任何地方的链接)。由于我不想在我的项目中实际更改ptTimeSelect.js文件,因此我将onclick事件代码通过jquery附加到链接。这是我在我的页面上放置的代码(其上有一个Time Select控件实例的页面):
$('a.ptTimeSelectHr').click(function (e) {
return false;
});
$('a.ptTimeSelectMin').click(function (e) {
return false;
});
$('a.ptTimeSelectHrAmPmCntr').click(function (e) {
return false;
});
$('#ptTimeSelectCloseCntr').children('a').click(function (e) {
return false;
});
$('#ptTimeSelectSetButton').children('a').click(function (e) {
return false;
});