Я работаю в мобильном веб-браузере для iOS, и все шло отлично, пока я не повредил стену под названием AngularJS ...
Мой WKWebview:
let config = WKWebViewConfiguration()
let preferences = WKPreferences()
preferences.javaScriptEnabled = true
preferences.javaScriptCanOpenWindowsAutomatically = true
config.preferences = preferences
config.userContentController.addUserScript(script)
config.allowsInlineMediaPlayback = true
self.webView = WKWebView(frame: <some frame>, configuration: config)
self.webView?.navigationDelegate = self
self.webView?.uiDelegate = self
Мойпроблема: на одном веб-сайте (вероятно, больше, но это единственный, который я нашел), у меня есть элемент <li>
в меню:
<li class="animate-menu ng-scope" ng-repeat="service in models.menu" dnd-draggable="service" ng-if="service.url" ng-click="goToUrl('<some url>', 'dossier_etudiant', false)" id="dossier_etudiant" draggable="true" style>
<i class="fa fa-address-card"></i>
<span class="service-libelle ng-binding">Mon dossier étudiant</span>
<p ng-click="goToUrl('<some url>', 'dossier_etudiant', false)" class="tooltip-service ng-binding">My student file</p>
</li>
В веб-браузере на рабочем столе, нажав наэта ссылка открывает новую вкладку about: blank, которая перезагружается по некоторому URL.
При нажатии на WKWebView следующий делегат вызывается, как и планировалось:
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
if (navigationAction.targetFrame == nil) {
print("Open in same tab, we don't really care at this point")
self.webView?.load(navigationAction.request)
}
return nil
}
ОДНАКО возвращаемое значение URL в navigationAction.request
равно « about: blank », поэтому мой webView просто загружает пустую страницу каждый раз.
Любая идея, как получить правильный URL, который появляется послестраница "about: blank"?Я также попытался внедрить несколько JS в WKWebView, чтобы перехватить событие «click», но кажется, что оно не срабатывает при нажатии на тег <li>
.
Спасибо за помощь.