我在我的网页上使用 Webkit 通知来通知用户页面中的更新(使用 AJAX 定期更新)。我使用带前缀的webkitNotifications而不是不带前缀的版本来尽可能保持向后兼容性。我创建一个通知,在元素的数据中保留对它的引用(使用 jQuery),向它添加一个onClose处理函数,然后显示它。通知按原样显示在通知中心,并且功能正常。如果我将onClick处理程序附加到它,它也会按预期运行。但是,当我关闭通知时(如果我将它作为警报单击关闭,或者如果它只是一个横幅,则在通知中心清除它)我的onClose在 Chrome 中不调用处理程序。我的网页上仍然有对通知的引用,如果我在其上调用取消方法(通知在通知中心不再可见),则确实会调用onClose处理程序。
据我所知,这个问题是在 Mountain Lion 上运行的 Chrome 所独有的(我没有在以前版本的 OSX 上测试过它,但我认为它的功能与 Windows 类似,因为当时不存在通知中心) . 在 Mountain Lion 上使用 Safari,在关闭通知时正确调用onClose,在 Windows 下从 Chrome 关闭通知时也会调用它。
有谁知道为什么会这样,以及是否有某种方法可以正确接收onClose事件?
我已经为人们设置了一个jsFiddle来测试它。
(澄清一下,我正在运行 Chrome 的 22.0.1229.79 版本,并且该测试适用于 Safari 的 6.0.1 版本)。