Javascript IE:为什么在某些客户端机器上event.ClientY总是负值?

Javascript IE:为什么在某些客户端机器上event.ClientY总是负值?,javascript,internet-explorer,javascript-events,Javascript,Internet Explorer,Javascript Events,我们有一个安装在intranet上并通过IE访问的应用程序。如果用户关闭浏览器(例如,使用浏览器右上角的X),我们需要执行某些操作,但如果用户单击链接转到其他页面,则不需要执行这些操作。所以在javascript中,我们想要检测这种情况。建议的最常见解决方案是,在onunload或onbeforeunload函数中,检查event.ClientY是否为负值。如果为负数,则用户已单击X以关闭浏览器。我知道这并不完全可靠,但它只需要在IE中工作。下面是一个示例: 这就是我们的问题:有些客户端计算机

我们有一个安装在intranet上并通过IE访问的应用程序。如果用户关闭浏览器(例如,使用浏览器右上角的X),我们需要执行某些操作,但如果用户单击链接转到其他页面,则不需要执行这些操作。所以在javascript中,我们想要检测这种情况。建议的最常见解决方案是,在onunload或onbeforeunload函数中,检查event.ClientY是否为负值。如果为负数,则用户已单击X以关闭浏览器。我知道这并不完全可靠,但它只需要在IE中工作。下面是一个示例:

这就是我们的问题:有些客户端计算机,当用户单击页面上的链接时,event.clientY值总是负值,然后运行javascript,而javascript只应在用户关闭浏览器时运行。event.clientX和event.clientY始终被固定为相同的负值,无论我单击的页面上的链接位于何处。我在执行此操作的客户端计算机上看不到任何不同(例如,IE版本或设置或兼容性视图,或者如果服务器是受信任的站点)。如果我在onclick函数中提醒event.clientY,它似乎是正确的。在onunload和onbeforeunload函数中,它仅被固定为负值


关于为什么会发生这种情况,或者IE设置可能导致这种情况,您有什么想法吗?

此Microsoft 2013年7月的更新打破了OP中的javascript(甚至在“已知问题”一节中也承认了这一点):

但在2013年8月的更新中已修复:


我已确认安装了Aug更新的客户端不再存在此问题。

当您打算让它们导航(例如,单击了链接或提交了表单)并在事件处理程序中检查时,为什么不设置一个标志?与关闭浏览器时检查光标位置(特别是考虑键盘快捷键)相比,这要简单得多。我的理解是,2013年7月的IE累积安全更新刚刚改变了clientX和clientY属性的行为(在onBeforeunload的情况下,它们现在总是返回0),打破你正在使用的模式。埃里克劳,你明白了。非常感谢!检查这里[谢谢,摩押赞,这是我遇到的同样问题。