javascriptCore.framework
使用如下代码可以等比缩放webview的网页大小,以便适配手机大小,0.5表示缩小为原网页1/2大小:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.zoom=0.5"];
}
webView上下文
JSContext *context = [self.webview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
(1)获取页面title
NSString *title = [webview stringByEvaluatingJavaScriptFromString:@"document.title"];
(2)获取当前的URL
NSString *url = [webview stringByEvaluatingJavaScriptFromString:@"document.location.href"];
WebView Post 请求 H5
NSURL *url = [NSURL URLWithString:self.url];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL: url];
[request setHTTPMethod: @"POST"];
[request setHTTPBody: [self.body dataUsingEncoding: NSUTF8StringEncoding]];
[self.webView loadRequest: request];
WebView使用
webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 100, CGRectGetWidth(self.view.frame), 500)];
webView.delegate = self;
[self.view addSubview:webView];
//设置URL请求
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
//请求事件
[webView loadRequest:request];
//@property (nonatomic) BOOL scalesPageToFit;
//自动适配屏幕
webView.scalesPageToFit = YES;
//禁止反弹
[(UIScrollView *)[[webView subviews] objectAtIndex:0] setBounces:NO];
//@property (nonatomic) UIDataDetectorTypes dataDetectorTypes NS_AVAILABLE_IOS(3_0);
/*
typedef NS_OPTIONS(NSUInteger, UIDataDetectorTypes) {
UIDataDetectorTypePhoneNumber = 1 << 0, // 默认 电话号码
UIDataDetectorTypeLink = 1 << 1, // URL
#if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED
UIDataDetectorTypeAddress = 1 << 2, // Email地址
UIDataDetectorTypeCalendarEvent = 1 << 3, // 日历 打开 ActionSheet
UIDataDetectorTypeNone = 0, // 无超链
UIDataDetectorTypeAll = NSUIntegerMax // All types
};
*/
webView.dataDetectorTypes = UIDataDetectorTypeAll;
//@property (nonatomic) BOOL allowsInlineMediaPlayback NS_AVAILABLE_IOS(4_0); // iPhone Safari defaults to NO. iPad Safari defaults to YES
//这个值决定了用内嵌HTML5播放视频还是用本地的全屏控制。(iPhone 默认关闭,iPad 默认打开)
webView.allowsInlineMediaPlayback = YES;
//@property (nonatomic) BOOL mediaPlaybackRequiresUserAction NS_AVAILABLE_IOS(4_0); // iPhone and iPad Safari both default to YES
//在iPhone和iPad上默认使YES。这个值决定了HTML5视频可以自动播放还是需要用户去启动播放
webView.mediaPlaybackRequiresUserAction = NO;
//@property (nonatomic) BOOL mediaPlaybackAllowsAirPlay NS_AVAILABLE_IOS(5_0); // iPhone and iPad Safari both default to YES
//这个值决定了从这个页面是否可以Air Play(蓝牙)。 在iPhone和iPad上默认使YES。
webView.mediaPlaybackAllowsAirPlay = YES;
//@property (nonatomic) BOOL suppressesIncrementalRendering NS_AVAILABLE_IOS(6_0); // iPhone and iPad Safari both default to NO
//是否网页内容下载完毕才开始渲染web视图,默认为NO
webView.suppressesIncrementalRendering = NO;
//@property (nonatomic) BOOL keyboardDisplayRequiresUserAction NS_AVAILABLE_IOS(6_0); // default is YES
//是否在web页面响应用户输入弹出键盘,默认为YES
webView.keyboardDisplayRequiresUserAction = YES;
//===================以下是io7新特性======================
//@property (nonatomic) UIWebPaginationMode paginationMode NS_AVAILABLE_IOS(7_0);
//设置此项属性网页会压缩展示,当网页的大小超出view时,以翻页的效果展示
/**
typedef NS_ENUM(NSInteger, UIWebPaginationMode) {
UIWebPaginationModeUnpaginated,//不使用翻页效果
UIWebPaginationModeLeftToRight,//将网页超出部分分页,从左向右进行翻页
UIWebPaginationModeTopToBottom,//将网页超出部分分页,从上向下进行翻页
UIWebPaginationModeBottomToTop,//将网页超出部分分页,从下向上进行翻页
UIWebPaginationModeRightToLeft//将网页超出部分分页,从右向左进行翻页
};
*/
webView.paginationMode = UIWebPaginationModeTopToBottom;
//@property (nonatomic) UIWebPaginationBreakingMode paginationBreakingMode NS_AVAILABLE_IOS(7_0);
//webView加载页面具有CSS属性时是使用页的样式还是以列的样式。
/**
typedef NS_ENUM(NSInteger, UIWebPaginationBreakingMode) {
UIWebPaginationBreakingModePage,
UIWebPaginationBreakingModeColumn
};
*/
webView.paginationBreakingMode = UIWebPaginationBreakingModeColumn;
//@property (nonatomic) CGFloat pageLength NS_AVAILABLE_IOS(7_0);
//分页的长度
webView.pageLength = 50;
//@property (nonatomic) CGFloat gapBetweenPages NS_AVAILABLE_IOS(7_0);
//页面之间间距
webView.gapBetweenPages = 1;
//@property (nonatomic, readonly) NSUInteger pageCount NS_AVAILABLE_IOS(7_0);
//分页数
NSUInteger count = webView.pageCount;
取消侧边和底部滚动条
UIWebView * d_intro = [[UIWebView alloc] init];
d_intro.delegate = self;
d_intro.dataDetectorTypes = UIDataDetectorTypeLink;
//取消右侧,下侧滚动条,去处上下滚动边界的黑色背景
d_intro.backgroundColor=[UIColor clearColor];
for (UIView *_aView in [d_intro subviews]) {
if ([_aView isKindOfClass:[UIScrollView class]]) {
[(UIScrollView *)_aView setShowsVerticalScrollIndicator:NO]; //右侧的滚动条 [(UIScrollView *)_aView setShowsHorizontalScrollIndicator:NO]; //下侧的滚动条 for (UIView *_inScrollview in _aView.subviews)
{
if ([_inScrollview isKindOfClass:[UIImageView class]])
{
_inScrollview.hidden = YES; //上下滚动出边界时的黑色的图片
}
}
}
} [self.view addSubview:d_intro];
JS调用OC方法
转自:http://www.2cto.com/kf/201503/383795.html
一、以前使用js调用object-c的方法
关于如何使用javascript调用object-c中的函数和方法,我搜索了好久
网上所有的方法,基本都指明了一个方向,那就是在UIWebview中载入的js代码中