Swift WKWebView ng-click问题

时间:2018-10-17 12:33:20

标签: ios angularjs swift wkwebview

我正在开发适用于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>标签时似乎没有触发。

感谢您的帮助。

0 个答案:

没有答案