iOS--JS

UIWebView是iOS最常用的8SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将javascript嵌入页面中,通过这个方法我们可以在iOS中与UIWebView中的网页元素交互。
使用stringByEvaluatingJavaScriptFromString方法,需要等UIWebView中的页面加载完成之后去调用。我们在界面上拖放一个UIWebView控件。在Load中将google mobile加载到这个控件中,代码如下:

[super viewDidLoad];
webview.backgroundColor = [UIColor clearColor];
webview.scalesPageToFit =YES;
webview.delegate =self;
NSURL *url =[[NSURL alloc]
initWithString:@"http://www.google.com.hk/m?gl=CN&hl=zh_CN&source=ihp"];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
[webview loadRequest:request];

1、获取当前页面的url。

  1. -(void)webViewDidFinishLoad:(UIWebView *)webView {
  2. NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
  3. }

2、获取页面title:

-(void)webViewDidFinishLoad:(UIWebView *)webView {
NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];
}

CGPoint pt = [tap locationInView:newsWebView];//函数返回一个CGPoint类型的值,表示触摸在view这个视图上的位置,
                //这里返回的位置是针对view的坐标系的。调用时传入的view参数为空的话,返回的时触摸点在整个窗口的位置。
NSString *imgURL = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", pt.x, pt.y];
//判断点击到的是否是图片,可设置特殊的url,
NSString *urlToSave = [newsWebView stringByEvaluatingJavaScriptFromString:imgURL];
//获取当前页面的URL                                                                             
//获取当前页面的高度
NSString *height_str= [newsWebView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"];


// 禁止用户选择
[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"];
// 禁止用户长按弹出弹出框
[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"];

iOS7之后,关于JavaScriptCore,
JSContext, JSContext是代表JS的执行环境,通过-evaluateScript:方法就可以执行一JS代码
JSValue, JSValue封装了JS与ObjC中的对应的类型,以及调用JS的API等
JSExport, JSExport是一个协议,遵守此协议,就可以定义我们自己的协议,在协议中声明的API都会在JS中暴露出来,才能调用

参考资料:(伯乐在线)http://ios.jobbole.com/83945/
(gitbook)https://www.gitbook.com/book/liuduo1988/ios/details

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 随着H5技术的兴起,在iOS开发过程中,难免会遇到原生应用需要和H5页面交互的问题。其中会涉及方法调用及参数传值等...
    Chris_js阅读 3,276评论 1 8
  • JS与Native交互,常用的有三种方式: 第一种,也是最简单,拦截协议,适配各种版本第二种,比较高级一点的,JS...
    赶往15号线阅读 3,032评论 1 10
  • 跟原生开发相比,H5的开发相对来一个成熟的框架和团队来讲在开发速度和开发效率上有着比原生很大的优势,至少不用等待审...
    大冲哥阅读 1,912评论 0 7
  • iOS开发免不了要与UIWebView打交道,然后就要涉及到JS与原生OC交互,今天总结一下JS与原生OC交互的两...
    德山_阅读 763评论 0 1
  • 大学里的三种人 原创 2017-1-11 大咩 木石姑娘花自开 三种极端 有的人有梦想并付出了同等的努力,在外人眼...
    咩的一声羊叫阅读 773评论 0 3

友情链接更多精彩内容