我正在开发适用于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>
在桌面Web浏览器上,单击该链接将打开一个“关于:空白”新标签,该标签会重新加载到某些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
}
但是,navigationAction.request
中返回的url值为“ about:blank ”,因此我的webView每次都只加载一个空白页面。
您知道如何获取“ about:blank”页面之后的正确网址吗?
我还尝试向WKWebView注入一些JS来捕获'click'事件,但是当单击<li>
标签时似乎没有触发。
感谢您的帮助。