作者:阁下贵姓 | 来源:互联网 | 2023-07-18 14:28
虽然使用原生的代码书写功能可以使应用的功能更加稳定,用户体验更佳完美,但是由于原生代码书写功能会受到审核时间相对较长,灵活性不足,页面不精彩的因素的限制,近些年来,很多的开发者都
虽然使用原生的代码书写功能可以使应用的功能更加稳定,用户体验更佳完美,但是由于原生代码书写功能会受到审核时间相对较长,灵活性不足,页面不精彩的因素的限制,近些年来,很多的开发者都在致力于开发出来易于改写,方便发布,完成及时性页面修改等功能的语言脚本,方法和框架,比如React,React-native以及cordova框架等。
现在我们就从基本的交互开始,来研究一下不使用第三方的框架和方法,如何实现js和原生的交互。我们知道原生iOS提供了UIWebView(虽然现在在弱化使用,但是依然是使用最多的网页加载控件)进行网页页面的加载和处理,现在我们就使用UIWebView加载本地的html来进行演示。在本地编辑并保存文件index.html,然后使用如下代码进行页面加载。
运行之后我们看到了只有一张图片和一个按钮的简单界面,我们现在假设点击按钮触发一个事件,然后在原生里进行获取事件时机,然后刷新出来一个百度的界面。
我们首先给页面上的button添加一个click事件,并定义点击事件:
然后运行程序,点击,在我们实现的代理方法里输出一下,看一下我们收到了什么样的网络请求:
没错就是我们刚才从h5发出去的请求,所以我们可以根据解析请求的url数据来接收来自h5的交互请求,但是我们发出该请求主要是为了拦截数据,而不是为了请求网页数据,所以返回false,同时为了让其他的请罪正常进行,我们使用判断只拦截我们在h5发送的请求。
然后运行程序,点击按钮,就看到了我们熟悉的百度页面。