美文网首页
UIWebview JS与OC注入、模拟按钮自动点击

UIWebview JS与OC注入、模拟按钮自动点击

作者: 24K纯城 | 来源:发表于2018-09-12 17:04 被阅读0次

    因工作原因,最近要用到x联的绑卡界面,但发现x联的绑卡界面属于网页,用户体验太差,为了干掉网页高度设置0,实现App原生体现效果,只能使用UIWebview的JS注入

    优点:用户体验好了,不用看见烦人的网页

    缺点:如果x联的页面标签换了,也要改变(必须了解JS基础)

    [webView stringByEvaluatingJavaScriptFromString:@“”];

    或:

    #import <JavaScriptCore/JavaScriptCore.h>

    JSContext * context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

    [context evaluateScript:@""];

    1、JS数据注入input单文本编辑框 代码(infoA属于数据数组)

    NSString * header = [NSString stringWithFormat:@"var script = document.createElement('script');script.type = 'text/javascript';"];

    NSString * input = @"var child = document.getElementsByTagName('input');";

    input属于网页标签,按照注入的不同换成不同标签

    NSString * JsS = [NSString stringWithFormat:@"%@%@",header,input];

    NSString * bodys = [NSString stringWithFormat:@"%@var objArray= new Array();",JsS];

    for (int i = 0; i < infoA.count; i++)

        {

            bodys = [bodys stringByAppendingFormat:@"objArray['%d']='%@';child[%d].value='%@';",i,infoA[i],i,infoA[i]];

        }

    return bodys;

    2、JS注入模拟按钮自动点击,此处模拟x联的短信验证码发送ID=@"sendCode";

    NSString * header = [NSString stringWithFormat:@"var script = document.createElement('script');script.type = 'text/javascript';"];

    return NSString stringWithFormat:@"%@document.getElementById('%@').click();",header,ID];

    3、JS根据class标签数据注入

    -(NSString *)g8byClassName:(NSString *)ClassName

                        parms:(NSArray *)parms

    {

        NSString * classN = [NSString stringWithFormat:@"var child=document.getElementsByClassName('%@');",ClassName];

        NSString * JsS = [NSString stringWithFormat:@"%@%@",header,classN];

        NSString * bodys = [NSString stringWithFormat:@"%@var objArray= new Array();",JsS];

        for (int i = 0; i < parms.count; i++)

        {

            bodys = [bodys stringByAppendingFormat:@"objArray['%d']='%@';child[%d].value='%@';",i,parms[i],i,parms[i]];

        }

        return bodys;

    }

    4、JS注入 根据class标签模拟按钮自动点击

    -(NSString *)clickByClassName:(NSString *)ClassName
    {
        NSString * bodys = [NSString stringWithFormat:@"%@var childClick=document.getElementsByClassName('%@');",header,ClassName];
        return [bodys stringByAppendingFormat:@"if(childClick.length>=0){childClick[0].click();}"];
    }

    5、注入JS函数

    context[@"jsContext"] = self;

    [context evaluateScript:@"jsContext.jsCallback('1');"];

    -(void)jsCallback:(NSString *)JSs;

    {

        CXTLog(@"函数参数 = %@",JSs);

    }

    相关文章

      网友评论

          本文标题:UIWebview JS与OC注入、模拟按钮自动点击

          本文链接:https://www.haomeiwen.com/subject/zdqbgftx.html