【发布时间】:2011-07-13 02:13:53
【问题描述】:
我希望我的 onbeforeunload 事件处理程序中的业务逻辑仅在单击指定元素时发生。
我有以下代码(简化):
var myButtonClicked = false;
$(document).ready(function() {
window.onbeforeunload = myEventHandler;
$("#myButton").click(function() {
myButtonClicked = true;
$("#myform").submit();
});
});
function myEventHandler(event)
{
if (myButtonClicked)
{
// Do checking.
// return "Dirty flag..blahblah";
}
}
目前这正在产生非常奇怪的行为 - 第一次单击我的按钮时,单击事件在 myEventHandler 之后处理。第二次点击是事先处理好的(这是FF4.0)。
非常感谢您对这项工作的任何帮助。
编辑:已修复。 :)
基本上我有两个点击事件;
myButton.click(function() {
...
ignoreFlag = true;
});
myButton.click(function() {
form.submit();
});
关于首先触发哪个事件始终是一场竞赛。我将两者合并,它似乎工作正常。
感谢您的帮助 ysrb :)
【问题讨论】:
-
你试过把return false;吗? $("#myButton").click(function() { myButtonClicked = true; return false; });我猜它正在发回。
-
@ysrb - 我希望它提交并执行回发(这将调用 onbeforeunload 方法 - 我已经更新了代码以澄清一点。
-
为什么要使用onbeforeunload?为什么你不能只用点击处理程序做你想做的事?
-
是的,同意 gilly3。您可以在 click 函数中进行检查。
-
啊——如果它能够满足我的要求,我会喜欢这个解决方案。但是,我在 SharePoint 中有一个自定义应用程序。我需要检查是否点击了页面上的任何链接,而不仅仅是我的点击处理程序。
标签: jquery click onbeforeunload