function getText() { return document.getElementById('text').innerHTML; }然后在iOS中实现一个回调方法,将JavaScript的执行结果返回给应用:
- (void)webView:(UIWebView *)webView didCreateJavaScriptContext:(JSContext *)ctx { ctx[@"getText"] = ^(void) { NSString *text = [self.webView stringByEvaluatingJavaScriptFromString:@"getText()"]; NSLog(@"%@",text); }; }2. 在JavaScript中调用iOS原生方法 在某些情况下,需要在JavaScript中调用iOS原生方法,比如发送短信、拨打电话。这时可以通过JavaScript与OC中的JavaScriptCore框架进行交互,实现相应的功能:
window.location.href = 'sms:10086';在OC中,实现以下方法,注册相应的Scheme:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if ([[request.URL scheme] isEqualToString:@"sms"]) { NSString *message = [request.URL absoluteString]; NSArray *components = [message componentsSeparatedByString:@":"]; NSString *phone = [components lastObject]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"sms:%@",phone]]]; return NO; } return YES; }3. 在Web视图中添加JavaScript动画 在Web视图中,可以通过添加JavaScript代码来实现动画效果。比如,以下代码实现了一个渐隐效果:
function fadeout() { var elem = document.getElementById('image'); var tick = function() { elem.style.opacity = parseFloat(elem.style.opacity) - 0.01; if (elem.style.opacity > 0) { requestAnimationFrame(tick); } else { elem.style.display = 'none'; } }; tick(); }添加动画的代码如下:
- (void)webViewDidFinishLoad:(UIWebView *)webView { [self.webView stringByEvaluatingJavaScriptFromString:@"function fadeout() { var elem = document.getElementById('image'); var tick = function() { elem.style.opacity = parseFloat(elem.style.opacity) - 0.01; if (elem.style.opacity > 0) { requestAnimationFrame(tick); } else { elem.style.display = 'none'; } }; tick(); }"]; [self.webView stringByEvaluatingJavaScriptFromString:@"fadeout();"]; }综上,JavaScript在iOS中的应用非常广泛,能够实现很多网页无法实现的效果。随着web视图的不断进化,JavaScript在iOS开发中的作用也变得越来越重要。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。