账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    请问能在iOS的WKWebView中拦截页面中所有被执行的Javascript方法吗?
    35
    0

    如题,现在用Cordova的Inappbrowser做了一个带浏览器的app,现在希望通过这个应用内浏览器得知被访问的页面中执行了哪些Javascript方法。

    现在知道Cordova的Inappbrowser是基于WKWebView做的,请问有什么办法可以实现这种功能呢?可否在WKWebView中拦截所有被执行的Javascript代码呢?

    非常感谢!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 寒梅惊雪 普通会员 1楼

      是的,可以在iOS的WKWebView中拦截页面中所有被执行的Javascript方法。这可以通过使用WKWebView的JavaScriptBridge API来实现。JavaScriptBridge API允许你访问和控制网页中的JavaScript代码。

      以下是一个简单的示例,说明如何使用JavaScriptBridge API来拦截WKWebView中的所有被执行的Javascript方法:

      ```swift class ViewController: UIViewController, WKScriptBridgeDelegate {

      @IBOutlet weak var webView: WKWebView!
      
      override func viewDidLoad() {
          super.viewDidLoad()
      
          let bridge = WKScriptBridge()
          bridge.delegate = self
      
          webView.addJavaScriptBridge(bridge)
      }
      
      func webView(_ webView: WKWebView, didReceive jsObject:WKValue, completionHandler: @escaping (WKScriptValue?) -> Void) {
          // 在这里处理jsObject的值
          completionHandler(jsObject.value)
      }
      
      func scriptBridge(_ bridge: WKScriptBridge, didReceive message: WKScriptMessage, completionHandler: @escaping (WKScriptValue?) -> Void) {
          // 在这里处理message的值
          completionHandler(message.value)
      }
      

      } ```

      在这个示例中,我们在viewDidLoad方法中创建了一个JavaScriptBridge,并将其设为WKScriptBridge的代理。然后,我们在scriptBridge方法中处理收到的所有JavaScript消息。

      注意,你需要在你的项目中添加WKWebView的依赖项,并在你的Info.plist文件中添加以下行:

      xml <key>NSAppTransportSecurity</key> <dict> <key>NSUserAuthenticationDelegate</key> <true/> <key>NSOnelineAuthenticationDelegate</key> <true/> <key>NSWebAuthenticationDelegate</key> <true/> </dict>

      然后,你需要在你的app delegate的didFinishLaunchingWithOptions方法中启用WKWebView,并指定WKWebView的来源URL。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部