IOS OC向h5注入JS代码,知道h5的页面按钮ID,向该按钮添加点击事件

欢迎使用Markdown编辑器写博客

本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:

  • 使用WKwebVIew,创建这个对象,代码如下
  • ** WKUserScript *script = [[WKUserScript alloc]initWithSource:@”” injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];

    WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc]init];
    [config.userContentController addUserScript:script];

    WKWebView *web = [[WKWebView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) configuration:config];
    web.backgroundColor = [UIColor yellowColor];
    web.navigationDelegate = self;
    web.UIDelegate = self;
    self.webView = web;
    [self.view addSubview:web];

    NSString *filrStr = [[NSBundle mainBundle] pathForResource:@”js” ofType:@”html”];
    NSURL *url = [NSURL fileURLWithPath:filrStr];
    [web loadFileURL:url allowingReadAccessToURL:url];
    [[web configuration].userContentController addScriptMessageHandler:self name:@”jsCallOC”];**
    在网页加载完成后调用这个回调函数,并在里面注入JS代码
    /* 网页加载完成 /
    -(void)webView:(WKWebView )webView didFinishNavigation:(WKNavigation )navigation{
    // NSString *butValueJS = @”document.getElementById(‘buttonJS’).innerText”;

    NSString *butValueJS =
    @”var button = document.getElementById(‘buttonJS’);button.onclick=function getImages(){window.webkit.messageHandlers.jsCallOC.postMessage({body: ‘goodsId=1212’});}”;

    [webView evaluateJavaScript:butValueJS completionHandler:^(id _Nullable response, NSError * _Nullable error) {
    }];
    }

  • 下面是截图
  • IOS OC向h5注入JS代码,知道h5的页面按钮ID,向该按钮添加点击事件
  • IOS OC向h5注入JS代码,知道h5的页面按钮ID,向该按钮添加点击事件
    /* 接收JS中方法执行事件。 /
    -(void)userContentController:(WKUserContentController )userContentController didReceiveScriptMessage:(WKScriptMessage )message{
    NSLog(@”message.body == %@”,message.name);

    [self JCtoOC:message];
    }
    -(void)JCtoOC:(id)body{
    NSLog(@”js调用我的..”);
    }
    最后在这里接收JS执行的事件