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。
- -(void)webViewDidFinishLoad:(UIWebView *)webView {
- NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
- }
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