zoukankan      html  css  js  c++  java
  • UIWebView与js交互

    在日常的ios项目开发中,我们经常会在原生应用中嵌入web页面,通常我们只是进行一个展示,没有其它的一些功能。但是也有一些项目中需要web页面中的html和native进行交互。但是ios sdk 并没有相应的方法来让我们做到js代码来和原生进行交互。但是webview在加载前会调用其一个delegate方法,通过监听

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

    代理方法,我们可以通过url的变化来判断用户目前的一些点击行为。如下:

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    if ([[request.URL.absoluteString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]hasSuffix:@'login_app']) {
    //用户点击了登录按钮
    [self doLogin];
    return YES;
    }else if([[request.URL.absoluteString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]hasSuffix:@'register_app']){
    //用户点击了注册按钮
    [self doRegister];
    return YES;
    }
    }

    我们可以看到,针对不同的url,我们可以判断对应的用户行为,但是前提是用户的不同行为给webView带来不同的响应url,这样我们才可以判断用户的行为。

    同时在我们的项目开发过程中,其实我们有的时候也希望去操控webview中显示的页面。针对这一点,ios sdk 提供了相应的方法,

    - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
    比如我们想获取页面中的id为icon_app的某个属性。我们可以如下操作

    NSString *downLoadPath = [webView stringByEvaluatingJavaScriptFromString:@'document.getElementById('icon_app').getAttribute('data_url')'];

    在编写这种代码的前提是我们对于js比较熟悉,能给书写一些简单的js代码,当然我们也可以向相应同事提供帮助。另外其实我们也可以调用webView中js方法,前提是我们的前端同事把对应的js方法写好,然后在我们在native中采用stringByEvaluatingJavaScriptFromString 来调用对应的方法。如下:

    [myWebView stringByEvaluatingJavaScriptFromString:@'showPlay()'];

  • 相关阅读:
    iOS开发之UIWebView自动滑动到顶部-备
    Android开发者须知的几种APP加密方式--备
    UITableView 小节-备
    判断字符串是否为数字-备
    关于iOS上的对象映射公用方法-备
    嵌入式开发之项目---uboot 内存合集
    多媒体开发之---h.264 SPS PPS解析源代码,C实现一以及nal分析器
    YUV视频格式到RGB32格式转换的速度优化 上篇
    多媒体开发之---音视频解码 视频回调的空转陷阱
    收集的网络上大型的开源图像处理软件代码(提供下载链接)
  • 原文地址:https://www.cnblogs.com/woaixixi/p/4494873.html
Copyright © 2011-2022 走看看