Date: 15.01.2018 19:02:53
Что-то типа такого?
//MyWebView.AllowedScriptNotifyUris = WebView.AnyScriptNotifyUri; (до Windows 8.1) await MyWebView.InvokeScriptAsync("eval", new[] { "document.onkeydown = function (e) { window.external.notify('Hello, UWP World!'); }" } ); //и обработчик события private void MyWebView_ScriptNotify(object sender, NotifyEventArgs e) { string parameter = e.Value; }Добавлено: для получения кода нажатой клавиши в onkeydown можно использовать e.keyCode / e.which
Date: 16.01.2018 8:26:48
Да, это устарело. Нужно вместо InvokeScript использовать InvokeScriptAsync.
И вместо AnyScriptNotifyURL - включить URL в параметр манифеста ApplicationContentUriRules
Date: 16.01.2018 9:29:37
eval по идее то же самое делает, что и execScript. Если в том же коде eval поставить, сработает?
Date: 16.01.2018 11:40:05
Прекращение клиентской поддержки |
Windows 8.1 |
---|
Теперь можно только для URL, внесенных в список. Причем внести в список запись типа *.* нельзя. Оно и понятно, такие схемы слишком небезопасны для UWP.
Так что легкого пути нет, если нужно заставить это работать на любых сайтах.
Добавлено: возможно есть какой-то обходной путь, например через CoreWindow.KeyDown
Date: 17.01.2018 3:48:52
Да, хоть и редко кто обрабатывает события на уровне отдельных HTML-элементов, а для document могут вместе уживаться несколько обработчиков (при использовании addEventListener вместо "=" ), в целом метод с JS-обработчиками хрупкий. Если где-то вызывается preventDefault, все сломается.
Наверное, должен быть какой-то другой метод, с использованием глобальных событий, вызываемых до передачи события конкретным элементам. Через CoreWindow.KeyDown или CoreWindow.Dispatcher.AcceleratorKeyActivated. В крайнем случае, через периодический опрос CoreWindow.GetKeyState, если не смущает постоянная загрузка процессора.
Date: 17.01.2018 7:39:48
"если событие есть в функционале элемента, отображается в окне свойств, и компилятор на него не ругается , то оно должно как то работать"
Не ругается, потому что WebView унаследован от UIElement, у которого есть это событие. По правилам ООП, класс-наследник не может "удалить" элемент, определенный в базовом классе, так и получается событие, которое существует, но ничего не делает.
Автор: VadimTagil