WKWebView - заменить веб-действие - PullRequest
0 голосов
/ 29 мая 2018

Внутри моего приложения я использую WKWebView для отображения веб-сайта.Моя цель состоит в том, чтобы, когда пользователь нажимает кнопку на этом веб-сайте, я хочу остановить действие, связанное с этим событием, и заменить его на свое собственное, выполненное собственноручно (настраиваемое действие вне WKWebView).Я пытался найти какое-либо решение, чтобы получить упомянутое событие, но безуспешно.Что еще пришло мне на ум, если есть способ получить JavaScript в WKWebView, у меня есть возможность добавить код JS-скрипта на этот сайт (не удалять действие, которое я хочу заблокировать).Спасибо за любую помощь.

1 Ответ

0 голосов
/ 29 мая 2018

Во-первых, у вас есть разрешение возиться с поведением этого веб-сайта?Я предполагаю, что вы делаете, иначе это, вероятно, незаконно.

Во-вторых, попробуйте использовать Safari Web Inspector с устройством / симулятором и использовать дерево DOM и консольные инструменты, чтобы выяснить, какой HTML / javascript используетсяс этим действием на этом сайте.

Если вы сами не можете найти, что происходит в HTML / JS, не стесняйтесь опубликовать новый отдельный вопрос о SO с вашим целевым URL, некоторым кодом HTML / JS иссылка / действие, которое вы хотите заменить.Пометьте вопрос с помощью «javascript» и спросите, можно ли написать какой-нибудь javascript, чтобы заменить это конкретное действие на какой-то собственный JS-код.

Обычно существует 2 типа действий: либо это что-то, что вызывает AJAX-вызовык серверному API, запускаемому обработчиком событий, или это простая HTML-ссылка, которая приводит к веб-навигации.В обоих случаях можно написать сценарий JS, который переопределяет действие.

Наконец, используйте WKUserScript , чтобы добавить JavaScript на страницу и переопределить действие.Используйте window.webkit.messageHandlers, чтобы отправить событие из вашего пользовательского действия на сторону приложения.Используйте WKScriptMessageHandler для обработки события в коде Objective-C или Swift.

См. Пример здесь: http://nshipster.com/wkwebkit/

...