美文网首页
iOS--JS

iOS--JS

作者: 舒耀 | 来源:发表于2015-07-23 15:06 被阅读1211次

    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

    相关文章

      网友评论

          本文标题:iOS--JS

          本文链接:https://www.haomeiwen.com/subject/vrzpqttx.html