Есть ли кто-нибудь, кто знает, как обрабатывать поведение Safari Web Browser, который устанавливает текущую страницу на предыдущую страницу всякий раз, когда пользователи нажимают клавишу возврата? В настоящее время я испытываю эту проблему на Mac OSX Lion 10.7.2 и приложении silverlight, когда наши пользователи пытаются исправить поля, используя клавишу backspace/Delete.Safari Mac OSX Backspace Issues
ответ
У меня была эта проблема и в прошлом. Я провел хорошую неделю или около того, пытаясь придумать решение, и в конечном счете, лучший способ обойти эту проблему (я никогда не нашел «исправить», так сказать) было следующее:
Приостановить все событий в нижнем пространстве, используя Javascript. Не допускайте, чтобы какие-либо события backspace достигали контейнера Silverlight. Это означает, что Silverlight никогда не перенесет вас на предыдущую страницу, но вы также не сможете удалить текст в текстовом поле! В пункте 2 объясняется, как обойти это.
Прикрепите обработчик события
KeyUp
к контроллеру SilverlightRootVisual
.KeyEventArgs
«Исходный источник - это TextField, и сам ключ былKey.Back
, тогда мы должны удалить текст внутри текстового поля вручную. Мы делаем это, просматривая свойства TextBoxSelectionStart
иSelectionLength
.SelectionStart
дает вам местоположение, которое вы хотите удалить, иSelectionLength
дает вам, сколько символов вы хотите удалить. Наконец, вам нужно найти правильное местоположение, где должен находиться курсор. Это должно быть просто равно значению свойстваSelectionStart
.
Существует недостаток с таким подходом. Поскольку мы должны вручную прослушивать события KeyUp
, событие Key.Back
KeyUp
запускается только при отпускании клавиши backspace. Это означает, что если вы используете Safari и удерживаете резервное копирование вниз, будет удален только один символ. Вам нужно будет освободить backspace и снова нажать его, чтобы удалить другой символ. По моему мнению, это небольшая цена, учитывая, что альтернативы - это просмотр предыдущей страницы или вообще не обращение к обратному пространству!
Стоит отметить, что все это может быть специфичным для Mac/Safari. Вы можете использовать HtmlPage.BrowserInformation.UserAgent
, чтобы найти тип браузера, и прикрепите приставку RootVisual_KeyUp
, если браузер - Safari. Если вы только приостановите события backspace в javascript в Safari, это будет иметь эффект только в Mac/Safari и будет поддерживать функциональность по умолчанию для каждого другого браузера.
Удачи! Надеюсь это поможет!
- 1. safari calc() left issues
- 2. Homebrew Mac Update Issues
- 3. Javascript не работает в Safari в Mac OSX
- 4. Невозможно включить службы определения местоположения Mac OSX с Safari
- 5. OSX Safari push messages
- 6. Cross Browser Font/Color Issues - Chrome/Safari
- 7. Herocu Toolbelt Issues on osx 10.5.8
- 8. Использование кувшина внутри Python | OSX Issues
- 9. Неспособность установить YEOMAN (Mac OSX)
- 10. Запуск приложения MAC OSX из другого приложения MAC OSX
- 11. Mac Safari Textarea Issue
- 12. red5 mac osx installation
- 13. gksu на Mac OSX
- 14. Install4j Подпись Mac OSx
- 15. glGenVertexArrays Mac OSX PyOpenGL
- 16. Winqual для Mac OSX
- 17. Mac OSX Audio keyboard
- 18. Mac OSX Overlay
- 19. Заблокировать/разблокировать mac osx
- 20. MAC OSX AVFoundation видеозахват
- 21. tkinter с mac osx
- 22. OSX Safari Рамка нагрузки Прерванного
- 23. Прокрутка в IE, Safari, OSX
- 24. Проблемы с OSX и Safari
- 25. отличия iphone safari webkit vs mac safari
- 26. Ruby на Mac OSX через Mac-порты
- 27. Safari 5 на Mac при загрузке файлов
- 28. Playframework reload not working Mac OSX
- 29. brew link jpeg issues
- 30. Mac OSX & Xcode Image View
Почему кто-то проголосовал за мой ответ? Это полностью работающее решение, которое я использую сейчас, без каких-либо жалоб. Я изложил, почему это не идеальное решение, но я очень сомневаюсь, что вы сможете найти его, пока эта ошибка Safari/Silverlight существует. –