公司有需要HybridApp和网页端的交互,就研究了一下JS注入。
要实现JS注入,要实现UIWebView的两个代理方法。不多说,上代码。
//加载完成时调用,一般做“JS注入”
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSMutableString *mStr = [NSMutableString string];
//点击网页中的按钮绑定超链接
[mStr appendString:@"var buyBtn = document.getElementsByClassName('buy-btn btn-gray')[0];buyBtn.onclick = function buyBtnClicked(){window.location.href = 'sx://ww.sx.com';};"];
[webView stringByEvaluatingJavaScriptFromString:mStr];
}
//将要加载时调用,一般用来对webview中的元素进行修改
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"%@", request.URL.absoluteString);
//获取到绑定的超链接,实现预期功能
if ([request.URL.absoluteString isEqualToString:@"sx://ww.sx.com"])
{
SXTestViewController *vc = [[SXTestViewController alloc] init];
vc.view.backgroundColor = [UIColor cyanColor];
[self.navigationController pushViewController:vc animated:YES];
return NO;
}
return YES;
}