IOS Object和javaScript相互调用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了IOS Object和javaScript相互调用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2297字,纯文字阅读大概需要4分钟。
内容图文
在IOS开发中有时会用到Object和javaScript相互调用,详细过程例如以下:
1. Object中运行javascript代码,这个比較简单,苹果提供了非常好的方法
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
2. javascript运行过程中返回给Object的数据或者调用Object方法。这个时候就须要用到UIWebView的地址重定向功能。主要代码例如以下:
(1)创建UIWebView
webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; webView.delegate = self; [self.view addSubview:webView]; [self loadWebPageWithString:_url]; - (void)loadWebPageWithString:(NSString*)urlString { NSURL *url =[NSURL URLWithString:urlString]; NSURLRequest *request =[NSURLRequest requestWithURL:url]; [webView loadRequest:request]; }
#pragma mark - UIWebViewDelegate - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSString *urlString = [[request URL] absoluteString]; debuglog(@"urlString = %@",urlString); NSString *prefix = @"myvideo"; if ([urlString hasPrefix:prefix]) { NSString *endString = [urlString substringFromIndex:7]; debuglog(@"last urlString = %@",endString); return NO; } return YES; } - (void)webViewDidStartLoad:(UIWebView *)webView { } - (void)webViewDidFinishLoad:(UIWebView *)webView { [self excuteJavaScript]; } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { } - (void)excuteJavaScript { NSString *js = @"var video = document.getElementsByTagName(‘video‘)[0];setTimeout(getVideo,1000); function getVideo(){ video = document.getElementsByTagName(‘video‘)[0];if(video==undefined){setTimeout(getVideo,1000);}else{ video.pause();if(video.src==‘‘){var video = document.getElementsByTagName(‘source‘)[0];}document.location = ‘myvideo‘+ video.getAttribute(‘src‘);injectedObject.playVideo(video.getAttribute(‘src‘));}}"; [webView stringByEvaluatingJavaScriptFromString:js]; }
说明例如以下:
(1)在UIWebView载入完网页的时候,即运行到webViewDidFinishLoad代理的时候。运行一段javascript代码。这段代码的作用是获取网页中的视频地址,代码中“ document.location = ‘myvideo‘+ video.getAttribute(‘src‘); ”这段特别重要,document.location是为了做地址重定向用的,运行完这段javascript代码。接着就会运行
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 这个代理方法,当中就会捕获到document.location给出的地址即‘myvideo‘+ video.getAttribute(‘src‘); 。你能够去掉‘myvideo‘头。就能够得到你须要的东西了。当中‘myvideo‘是你自定义的一个头。是为了便于解析后面的数据。
内容总结
以上是互联网集市为您收集整理的IOS Object和javaScript相互调用全部内容,希望文章能够帮你解决IOS Object和javaScript相互调用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。