首页 > 代码库 > 在UIWebView中间接调用网页中的javascript代码获得想要的值
在UIWebView中间接调用网页中的javascript代码获得想要的值
日记和一些废话:
今天在使用webView加载网页后, 发现网页中的点击事件是用js代码实现的, 可是怎么点击都没有反应, 而且我主要是想获取到点击事件转到的url , 后来发现html中又这么一段代码:
document.addEventListener(‘WebViewJavascriptBridgeReady‘, function onBridgeReady(event)
function openPage(pageUrl) { if(bridge) { bridge.send(pageUrl); } }
<li><a onclick="javascript:openPage(‘http://.....
看样子点击事件就跟这几段有关了, 那就从这里入手
搜索了点资料, 发现原来UIWebView有个神奇的方法:
stringByEvaluatingJavaScriptFromString
果断搞起
首先想要获取网页内数据的变化需要UIWebViewDelegate协议的相关方法
比如说我想知道原网页的js函数中参数, 可以像js中注入一段代码获取这个参数, 并加上一个前缀方便识别, 我加上了‘bbb‘
- (void)webViewDidFinishLoad:(UIWebView *)webView { // 注入js代码改变网页的url [webView stringByEvaluatingJavaScriptFromString:@"function openPage(pageUrl){ document.location.href = http://www.mamicode.com/‘bbb‘ + pageUrl;}"];}
现在我给点击事件跳转的url加上了自己的标识, 现在就可以根据这个标识找到我想要的url了, webView在网页发生重定向时会调用下面这个方法
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { // 1. 截取重定向的url字符串 NSString *url = [[request URL] absoluteString]; // 2. 判断js注入的标识符 if ([url hasPrefix:@"bbb"]) { // 3. 将标示符后的字符串截取出来, 就是我们想要的url NSString *str = [url substringFromIndex:3]; //因为我只想要获取到这个url, 不需要发生网页跳转, 所以return NO return NO; } return YES;}
好了我拿到这个网址了
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。