OC中WKWebView与js的交互

之前用UIWebView的时候,非常的爽,用JSContext这个类就可以做想做的事,现在要改成WKWebView就比较的坑爹了(这是为什么博主要换控件的原因),因为博主需要在页面文件加载之前就把参数给到web端(js调用有返回值oc方法)。把WKWebView的所以代理方法都看了一遍,发现只有下面方式能与js交互:

window.webkit.messageHandlers.<name>.postMessage();

但是这个是没有返回值的,于是博主又想到了。如果让web端用这个方法来通知博主这边,再通过博主这边调用web端,这样好像是可以的,但遗憾的是web端通知了博主以后,是不会停止运行的,还是会走下去的,所以当博主再调用web端传参数时,这是没有意义了。后来博主又想到,是不是可以让web端通知博主后阻塞,然后当博主传完参数再执行下去,最后web端童鞋说很麻烦,就没有动了。想了好长一段时间,才想到是不是可以在web端页面加载前,博主就把参数传到浏览器的一个地方,然后web端去浏览器的那个地方取就行了。于是有了下面的写法:

要注意的地方是injectionTime,别弄错了

WeakScriptMessageDelegate.h文件

WeakScriptMessageDelegate.m文件

localStorage这个是网页的本地存储(H5的新东西),相当于iOS的NSUserDefaults,不过大小一般只有5M,这个与浏览器有关。accessToken这个是与web端约定参数key,当然你也可以像下面这样写:

localStorage["accessToken"] = "74851c23358c";
localStorage.accessToken ="74851c23358c";

博主的写法是官方推荐的,反正官方说的,就按照官方的写咯。想了解更多的localStorage的知识,点这里

PS:如果大家有更好的方法,可以在评论里写出来,或者私信博主,想要demo的点这里


转载链接:https://www.jianshu.com/p/d8a8913d7e8e

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值