Safari Mac OSX 退格键问题

Safari Mac OSX Backspace Issues

本文关键字:问题 Mac OSX Safari      更新时间:2023-09-26

有没有人知道如何处理Safari Web浏览器的行为,每当用户按下退格键时,将当前页面设置为上一页?我目前在Mac OSX Lion 10.7.2和silverlight应用程序上遇到此问题,每当我们的用户尝试使用退格键/删除键更正字段时。

我过去也遇到过这个问题。我花了一周左右的时间试图提出一个解决方案,最终解决此问题的最佳方法(可以这么说,我从未找到"修复")如下:

  1. 使用 Javascript 暂停所有退格键关闭事件。不允许任何退格键事件到达 Silverlight 容器。这意味着 Silverlight 永远不会再将您带到上一页,但您也无法删除文本字段中的任何文本!第 2 点解释了如何解决此问题。

  2. KeyUp 事件处理程序附加到 Silverlight 控件的RootVisualKeyEventArgs ' 原始源是一个 TextField 并且键本身是Key.Back的,那么我们必须手动删除文本框中的一些文本。我们通过查看文本框的SelectionStartSelectionLength属性来执行此操作。 SelectionStart为您提供要从中删除的位置,SelectionLength提供要删除的字符数。最后,您需要找出光标现在应该在的正确位置。这应该刚好等于SelectionStart属性的值。

这种方法存在缺陷。因为我们必须手动监听KeyUp事件,所以只有在释放退格键时才会触发Key.Back KeyUp事件。这意味着,如果您使用的是 Safari 并按住退格键,则只会删除一个字符。您需要释放退格键并再次按下它以删除另一个字符。在我看来,这是一个很小的代价,考虑到替代方案是查看上一页或根本不处理退格!

值得注意的是,所有这些都可以是特定于Mac/Safari的。您可以使用HtmlPage.BrowserInformation.UserAgent查找浏览器类型,并且仅在浏览器是 Safari 浏览器时才附加RootVisual_KeyUp处理程序。如果你只在 Safari 的 javascript 中挂起退格键事件,这只会在 Mac/Safari 中产生影响,并保留其他浏览器的默认功能。

祝你好运!希望这有帮助!