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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
UIWebView에 BASIC 인증 지원을 위한 UI 추가UIWebView는 표준으로 BASIC 인증을 지원하지 않지만 URLProtocol 메커니즘을 사용하여 인증이 요청된 시점에서 임의의 처리 후크를 할 수 있습니다. 그래서 모바일 Safari와 마찬가지로 Uialer...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.