Objective-C与JavaScript的简易交互操作

1. iOS开发过程中遇到数据为html的字符串,联想到跟网页有关的UI控件UIWebView,进去浏览所有方法和属性,看到如下方法:

- (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
- (void)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL;


2. 将解析到的html字符串用第二个方法加载到WebView上,网页模式的结果显示在UiWebView上:

[_webView loadHTMLString:_dataModel.html baseURL:nil];// 加载HTML数据至WebView上


3. 数据能够显示在WebView上,但是仔细一看图片并没有按照我们所想的显示;接着我们设置WebView的代理,并实现代理方法如下:

_webView.delegate = self;// 设置代理
- (void)webViewDidFinishLoad:(UIWebView *)webView // 实现WebView数据加载完毕调用的代理方法



4. 接着我们在代理方法中使用第二个方法 JavaScript进行交互操作

[_webView stringByEvaluatingJavaScriptFromString:
     @"var script = document.createElement('script');"
     "script.type = 'text/javascript';"
     "script.text = \"function ResizeImages() { "
     "var myimg,oldwidth;"
     "var maxwidth = 395.0;" // UIWebView中显示的图片宽度
     "for(i=0;i <document.images.length;i++){"
     "myimg = document.images[i];"
     "if(myimg.width > maxwidth){"// 图片宽度大于我们设定的最大宽度,才去让图片等比缩放
     "oldwidth = myimg.width;"
     "myimg.width = maxwidth;"// 在HTML中图片的宽高比固定,只需修改一个
     "}"
     "}"
     "}\";"
     "document.getElementsByTagName('head')[0].appendChild(script);"];
[_webView stringByEvaluatingJavaScriptFromString:@"ResizeImages();"];// 插入上面定义的方法


5. 但是在阅读苹果API的时候,官方说此方法虽然没有弃用,但是最好用 evaluateJavaScript:completionHandler:.

 Although this method is not deprecated, best practice is to use the evaluateJavaScript:completionHandler: method of the WKWebView class instead.



6. 此方法是block回调,只需在block中与JavaScript交互即可.(注意: 此方法属于WKWebView,目的在于替换UIWebView,必须引入WebKit框架).


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值