标签: wknavigationdelegate

获取WKWebView的当前完整URL

有没有办法让WKWebView每个请求加载一个FULL URL ?

webView:didFinishNavigation:
Run Code Online (Sandbox Code Playgroud)

仅适用于mainFrame导航,不提供URL请求参数.

如何获得完整的URL只是喜欢UIWebViewDelegate

webViewDidFinishLoad:webView
Run Code Online (Sandbox Code Playgroud)

...在任何加载完成后调用,您可以从webView参数中获取完整的请求URL .

很好WKWebView的是,URL属性可以节省提取UI友好的基本URL所需的工作,但这是一个巨大的损失,我们无法获得完整的URL!

我试过用

webView:decidePolicyForNavigationAction:decisionHandler:
Run Code Online (Sandbox Code Playgroud)

...但是,与完成页面加载后UIWebViewrequest属性相比,它会产生不同的URL结果.

wkwebview wknavigationdelegate

21
推荐指数
3
解决办法
3万
查看次数

停止导航 WKWebview

这是我的情况:

我在 WKWebView 中有一个视图控制器。该网络视图以页面“A”开始。在此页面中有一些链接(href),我希望其中一些链接必须在外部浏览器中打开。

为此,我设置了 WKWebView 委托:

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {

        if let url = webView.url?.absoluteString
        {

                if(self.isExternalURL(url))
                {
                    let urlT = URL(string: url)!
                    decisionHandler(.cancel)
                    UIApplication.shared.open(urlT, options: [:], completionHandler: nil)
                }
                else
                {
                    decisionHandler(.allow)
                }
         }
         else
         {
                decisionHandler(.allow)
         }
}

private func isExternalURL(url:String) -> Bool
{
    //......check link
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我选择外部链接,外部浏览器会打开,但 webview 不会保留在页面 A 上,但它也会加载外部链接,而我希望它保留在页面 A 上。

我不知道为什么

ios swift wkwebview wknavigationdelegate

4
推荐指数
1
解决办法
5878
查看次数

如何将 WKScriptMessage.body 转换为结构体?

我设置了该WKScriptMessageHandler函数userContentController(WKUserContentController, didReceive: WKScriptMessage)来处理发送到本机应用程序的 JavaScript 消息。我提前知道消息正文总是会返回相同的字段。如何将WKScriptMessage.body, 声明为Any结构体?

swift wknavigationdelegate

4
推荐指数
1
解决办法
4104
查看次数

标签 统计

wknavigationdelegate ×3

swift ×2

wkwebview ×2

ios ×1