• 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()'];

  • 相关阅读:
    HTML5基础内容(二)
    JavaScript逻辑运算符
    JavaScript自增运算符和自减运算符
    JavaScript算数运算符和一元运算符
    CSS分页
    HTML和CSS遇到的细节问题
    JavaScript数据类型转换
    JavaScript标识符
    HTML5基础知识汇总(一)
    CSS颜色透明度
  • 原文地址:https://www.cnblogs.com/woaixixi/p/4494873.html
Copyright © 2020-2023  润新知