UIWebView 의 HTML 5 확장

6280 단어 UIWebView
http://blog.csdn.net/duzixi/article/details/36047201

 
많은 iOS 개발 자 들 에 게 HTML 5 의 내용 은 생소 하 다.
특히 UIWebView 같은 거. stringByEvaluatingJavaScriptFromString 방법
많은 사람들 로 하여 금 또 하나의 새로운 언어 를 배 워 야 한다 고 느끼 게 하 다.
이 부분 도 프로젝트 중 학생 들 이 자주 묻 는 질문 중 하나 다.
본 고 는 카 테 고리 (클래스) 방식 으로 UIWebView 류 를 확장 하여 자주 사용 하 는 자바 스 크 립 트 작업 을 UIWebView 류 방법 으로 패키지 하 였 다.
 
최신 소스 코드 다운로드 주소: https://github.com/duzixi/UIWebView-HTML5 (지속 유지 보수)
 헤더 파일 (UIWebView + HTML 5. h)
//

//  UIWebView+HTML5.h

//  WebViewJS

//

//  Created by    (duzixi) on 14-6-30.

//  Edited  by    (duzixi) on 14-7-11.           

//                                         (jQuery)

//  Copyright (c) 2014  lanou3g.com   . All rights reserved.

//



#import <UIKit/UIKit.h>





@interface UIWebView (JavaScript)



#pragma mark -

#pragma mark         



///             

- (int)nodeCountOfTag:(NSString *)tag;



///        URL

- (NSString *) getCurrentURL;



///      

- (NSString *) getTitle;



///      

- (NSArray *) getImgs;



///            

- (NSArray *) getOnClicks;



#pragma mark -

#pragma mark          



///        

- (void) setBackgroundColor:(UIColor *)color;



///             (           )

- (void) addClickEventOnImg;



///           

- (void) setImgWidth:(int)size;



///           

- (void) setImgHeight:(int)size;



///             

- (void) setFontColor:(UIColor *) color withTag:(NSString *)tagName;



///             

- (void) setFontSize:(int) size withTag:(NSString *)tagName;



@end


 실행 파일 (UIWebView + HTML 5. m):
//

//  UIWebView+HTML5.m

//

//  Created by    (duzixi) on 14-6-30.

//  Edited  by    (duzixi) on 14-7-11.           

//                                         (jQuery)

//  Copyright (c) 2014  lanou3g.com   . All rights reserved.

//



#import "UIWebView+HTML5.h"

#import "UIColor+Change.h"



@implementation UIWebView (JavaScript)



#pragma mark -

#pragma mark         



///             

- (int)nodeCountOfTag:(NSString *)tag

{

    NSString *jsString = [NSString stringWithFormat:@"document.getElementsByTagName('%@').length", tag];

    int len = [[self stringByEvaluatingJavaScriptFromString:jsString] intValue];

    return len;

}



///        URL

- (NSString *)getCurrentURL

{

    return [self stringByEvaluatingJavaScriptFromString:@"document.location.href"];

}



///      

- (NSString *)getTitle

{

    return [self stringByEvaluatingJavaScriptFromString:@"document.title"];

}



///          

- (NSArray *)getImgs

{

    NSMutableArray *arrImgURL = [[NSMutableArray alloc] init];

    

    for (int i = 0; i < [self nodeCountOfTag:@"img"]; i++) {

        NSString *jsString = [NSString stringWithFormat:@"document.getElementsByTagName('img')[%d].src", i];

        [arrImgURL addObject:[self stringByEvaluatingJavaScriptFromString:jsString]];

    }

    return arrImgURL;

}



///              

- (NSArray *)getOnClicks

{

    NSMutableArray *arrOnClicks = [[NSMutableArray alloc] init];

    

    for (int i = 0; i < [self nodeCountOfTag:@"a"]; i++) {

        NSString *jsString = [NSString stringWithFormat:@"document.getElementsByTagName('a')[%d].getAttribute('onclick')", i];

        NSString *clickString = [self stringByEvaluatingJavaScriptFromString:jsString];

        NSLog(@"%@", clickString);

        [arrOnClicks addObject:clickString];

    }

    return arrOnClicks;

}



#pragma mark -

#pragma mark          



///        

- (void)setBackgroundColor:(UIColor *)color

{

    NSString * jsString = [NSString stringWithFormat:@"document.body.style.backgroundColor = '%@'",[color webColorString]];

    [self stringByEvaluatingJavaScriptFromString:jsString];

}



///             (           ,          )

- (void)addClickEventOnImg

{

    for (int i = 0; i < [self nodeCountOfTag:@"img"]; i++) {

        //       img.src,   , url  'img:'  

        NSString *jsString = [NSString stringWithFormat:

            @"document.getElementsByTagName('img')[%d].onclick = \

              function() { document.location.href = 'img' + this.src; }",i];

        [self stringByEvaluatingJavaScriptFromString:jsString];

    }

}



///           

- (void) setImgWidth:(int)size

{

    for (int i = 0; i < [self nodeCountOfTag:@"img"]; i++) {

        NSString *jsString = [NSString stringWithFormat:@"document.getElementsByTagName('img')[%d].width = '%d'", i, size];

        [self stringByEvaluatingJavaScriptFromString:jsString];

    }

}



///           

- (void) setImgHeight:(int)size

{

    for (int i = 0; i < [self nodeCountOfTag:@"img"]; i++) {

        NSString *jsString = [NSString stringWithFormat:@"document.getElementsByTagName('img')[%d].height = '%d'", i, size];

        [self stringByEvaluatingJavaScriptFromString:jsString];

    }

}



///             

- (void)setFontColor:(UIColor *)color withTag:(NSString *)tagName

{

    NSString *jsString = [NSString stringWithFormat:

        @"var nodes = document.getElementsByTagName('%@'); \

          for(var i=0;i<nodes.length;i++){\

              nodes[i].style.color = '%@';}", tagName, [color webColorString]];

    [self stringByEvaluatingJavaScriptFromString:jsString];

}



///             

- (void)setFontSize:(int)size withTag:(NSString *)tagName

{

    NSString *jsString = [NSString stringWithFormat:

        @"var nodes = document.getElementsByTagName('%@'); \

          for(var i=0;i<nodes.length;i++){\

              nodes[i].style.fontSize = '%dpx';}", tagName, size];

    [self stringByEvaluatingJavaScriptFromString:jsString];

}

@end


 원문의 출처: http://blog.csdn.net/duzixi/article/details/36047201

좋은 웹페이지 즐겨찾기