Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有可能在IE(javascript)中获取触发窗口卸载的元素?_Javascript_Internet Explorer_Onbeforeunload - Fatal编程技术网

是否有可能在IE(javascript)中获取触发窗口卸载的元素?

是否有可能在IE(javascript)中获取触发窗口卸载的元素?,javascript,internet-explorer,onbeforeunload,Javascript,Internet Explorer,Onbeforeunload,我正在尝试处理beforeunload事件。这样做的目的是显示您正在尝试导航,未保存的数据将丢失。。。仅当浏览器窗口/选项卡关闭且页面上的某些控件被单击时,才会显示此消息。到目前为止,我确定消息是否需要由单击的控件的CSS类显示。守则: function RaiseSubmitPrompt(event, confirmText) { var eTarget = event.target.activeElement; if (eTarget.className.indexOf(

我正在尝试处理beforeunload事件。这样做的目的是显示您正在尝试导航,未保存的数据将丢失。。。仅当浏览器窗口/选项卡关闭且页面上的某些控件被单击时,才会显示此消息。到目前为止,我确定消息是否需要由单击的控件的CSS类显示。守则:

 function RaiseSubmitPrompt(event, confirmText) {
    var eTarget =  event.target.activeElement;
    if (eTarget.className.indexOf('noNavigationPrompt') < 0) {
        if (HasPendingComments()) {
            return confirmText;
        }
    }
}

这适用于FF和Chrome,但在IE上崩溃。我确实知道,IE中没有activeElement属性,但最严重的问题似乎是,在EI事件中。target始终指向窗口对象,而且从定义上看,试图以某种方式获取对单击按钮或链接的引用是没有希望的。这是真的吗,还是有什么方法可以在卸载事件处理程序代码之前获取该引用?

如果要跟踪按钮和链接,请在按钮和链接上附加onmousedown事件并存储上次单击的元素。。。在onbeforeunload中,您可以使用它。对不起,在第一次回答之前,没有正确阅读您的评论。你有一个很好的观点,我会尝试说一个按钮绑定到一些JS,在某些情况下会发回,在其他情况下不会。如果单击了按钮,但后一个JS没有启动回发,那么按钮仍然存储在一个变量中。若稍后用户决定关闭浏览器窗口,onbeforeunload处理程序将获取之前存储的按钮,并认为这导致了卸载,但事实并非如此。看起来,它不起作用。您应该在其他脚本执行相同操作之前绑定它。这就是为什么我还建议使用onmousedown而不是稍后单击的原因。这似乎很有趣,但可能是我太累了,无法理解。我选择了另一种方法来解决这个问题:解除“beforeunload”的绑定,并按照下面的方法再次绑定它:函数EscapePrompt{$window.unbind'beforeunload';setIntervalfunction{BindBeforeUnload},1000;}