是否有可能在IE(javascript)中获取触发窗口卸载的元素?
我正在尝试处理beforeunload事件。这样做的目的是显示您正在尝试导航,未保存的数据将丢失。。。仅当浏览器窗口/选项卡关闭且页面上的某些控件被单击时,才会显示此消息。到目前为止,我确定消息是否需要由单击的控件的CSS类显示。守则:是否有可能在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(
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;}