Javascript/jQuery onbeforeunload HTML 事件麻烦

Posted

技术标签:

【中文标题】Javascript/jQuery onbeforeunload HTML 事件麻烦【英文标题】:Javascript/jQuery onbeforeunload HTML Event trouble 【发布时间】:2015-08-28 09:38:11 【问题描述】:

我的这段代码没有做我想做的事:

$('body').attr("onbeforeunload", "return dojoclick()");

function dojoclick()
    dojo.byId('jstop').click();

“点击”功能不起作用,但如果我将“点击”替换为“删除”它会起作用...例如:

$('body').attr("onbeforeunload", "return dojoclick()");

function dojoclick()
    dojo.byId('jstop').remove(); //Element is removed properly

“点击”功能有效,因为如果我通过控制台调用“dojoclick()”,它会触发:

单击按钮后,它会打开一个记事本(它调用一个 Java 例程来打开 notepad.exe)。

为什么函数dojoclick()不执行onbeforeunload

【问题讨论】:

什么?浏览器打开记事本? ID 为“jstop”的按钮有一个关联事件,该事件调用一个打开记事本的 Java 例程。我只想在窗口关闭时触发该事件。如果我知道怎么做,我会直接调用事件内部的函数(Dojo 是这样做的,而我对 Dojo 一无所知)。所以最简单(理论上)的方法是模拟点击,以便事件调用函数。记事本只是一个测试。它表示 Java 例程已被执行。 谢谢哥们。我只是对记事本执行感到好奇。我不确定我是否是合适的人选。祝你的问题一切顺利。 【参考方案1】:

尝试使用

$(window).on('beforeunload', function()
              dojoclick();
       );

而不是将其附加为 html 属性。

也可以直接使用

$(window).on('beforeunload', function()
              dojo.byId('jstop').click();
       );

很遗憾我帮不了你,我真的不知道道场是怎么运作的

【讨论】:

【参考方案2】:

我找到了一个解决方案,也许它的功能很糟糕:

dojo.addOnUnload(function()
    dojo.byId('jstop').click();
);

它随机工作(?)我的意思是,我关闭窗口 10 次,它触发 6。我讨厌这个。

【讨论】:

我认为问题是(可能)延迟时间。单击后添加返回“某物”然后再次检查?

以上是关于Javascript/jQuery onbeforeunload HTML 事件麻烦的主要内容,如果未能解决你的问题,请参考以下文章

javascript jquery全选反选#jquery

Javascript / jQuery - 隐藏字段时禁用验证

javascript,jquery上的qts [重复]

CodeIgniter 和 Javascript/Jquery 库

JavaScript 快速Javascript / jQuery函数

Javascript/JQuery 仅在页面焦点上执行 Javascript