swift 笔记:iOS与JavaScript的交互(一):UIWebView - 3.2 native对协议链接拦截

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift 笔记:iOS与JavaScript的交互(一):UIWebView - 3.2 native对协议链接拦截相关的知识,希望对你有一定的参考价值。

extension ViewController: UIWebViewDelegate {
  func webView(_ webView: UIWebView,
             shouldStartLoadWith request: URLRequest,
             navigationType: UIWebViewNavigationType) -> Bool {
    
    // 1 拦截名为 hello 协议;
    if request.url?.scheme == "hello" {
     
     // 2 获取协议后的 path,也就是lien;
     let path = request.url?.absoluteString as String!

      // 3 将 path 的 string 作为 window.alert() 方法的参数,
      // 通过 webview.stringByEvaluatingJavaScript() 方法执行该 JavaScript 函数;
      let msg = String(format: "alert('intercept scheme: %@')", path!)
      webview.stringByEvaluatingJavaScript(from: msg)

      // 4 因为拦截到了对应的hello 协议,在 delegate method 最终返回 false,
      // 阻止 UIWebView 继续执行该请求(跳转了也是个 404)。
      return false
    }

    return true
 }
}

以上是关于swift 笔记:iOS与JavaScript的交互(一):UIWebView - 3.2 native对协议链接拦截的主要内容,如果未能解决你的问题,请参考以下文章

swift 笔记:iOS与JavaScript的交互(二):JavaScriptCore:11。暴露

swift 笔记:iOS与JavaScript的交互(二):JavaScriptCore:8。调用引入的JavaScript - 调用

swift 笔记:iOS与JavaScript的交互(二):JavaScriptCore:7。调用引入的JavaScript - 引入方法

swift 笔记:iOS与JavaScript的交互(三):WKWebView 2.显示加载进度

swift 笔记:iOS与JavaScript的交互(二):JavaScriptCore:14。 camelCase调用

swift 笔记:iOS与JavaScript的交互(一):UIWebView - 2.1 UIWebViewDelegate