的代理方法必威:,UIWebView常用的加载资源的方

是因为H5具有跨平台的优势,在无数情状下恐怕会动用到,不过对于混编不时候会是不能缺少的。1> 使用OC调用javascript代码首先要领会一下web的加载;在OC中,加载网页的控件是UIWebView;一般大家必要做的是先加载原本的Web,然后再开展拍卖,那样的话,就能用到UIWebView的代办方法。

排版相比较乱,请移步:OC 和 JS 交互

UIWebView

一、简介

// 这个方法是网页加载完毕之后进行调用- webViewDidFinishLoad:(UIWebView *)webView;

JS和OC的交互格局有二种:

1.OC调用JS - OC执行JS代码

手续1>展现页面,其实正是加载央浼:使用[self.webView loadRequest:request];

与此相同的时间让调控器成为webView的代理,监听网页加载完成 :的代理方法:

/**

*网页加载达成

*/

- (void)webViewDidFinishLoad:(UIWebView*)webView { }

步骤2>让页面调用OC中的脚本,它属于webView的二个格局,非常提示 : 实践JS脚本代码仅仅独有这一种办法:

[webView stringByEvaluatingJavaScriptFromString:@“JS代码”];

举例 一:

/**

*网页加载完成

*/

- (void)webViewDidFinishLoad:(UIWebView*)webView

{

NSString*js =@"document.getElementsByTagName('footer')[0].remove();";

[webView stringByEvaluatingJavaScriptFromString:js];

}

举例 二:

- (void)webViewDidFinishLoad:(UIWebView*)webView

{

NSString*JS代码=@"function login (username, pwd) {  "

"   return 10;"

"       }"

"   login();";

//在OC中调用JS的函数(执行JS代码)

[webView stringByEvaluatingJavaScriptFromString:@“JS代码”];

}

2.JS调用OC -便是JS调用OC中的方法

步骤1>需自定义href合同,能够钦命方法名和参数:然后将OC方法和参数值拼接在二个UOdysseyL中

/*通用url的设计

1>公约一定: hm:

2>一般有2个参数2.1>方法名2.2>方法参数

*/

window.location.href = 'hm:saveImageToAblum:&' + this.src

步骤2>使用代理协议中的方法阻碍央求 :  每发送央求以前系统会活动调用该代理方法:

/**

调用:每当webView发送二个呼吁在此之前都会先调用那个艺术

request :就要发送的呼吁

BOOL : Yes :允许发送那些央浼No :禁止发送那些乞求

navigationType :是或不是在新窗口中开发

*/

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType

{

//        a)在那么些代理方法中梗阻JS伏乞的U奇骏L

//        b)从URubiconL中截取相应的方法名和参数

//        c)调用方法,传递参数

returnYES/NO;

}

什么是UIWebView

近八年随着HTML5的飞跃发展与日益成熟,越多的移动开辟者采纳使用HTML5来进展混合开拓,不只有节省资金还要效果秀丽,那么作为内置浏览器的WebView被重视起来,不管是iOS依旧Android,都假设使用WebView来加载HTML5页面,以致有一点程序展开后唯有一个WebView控件,其余的页面都是被它加载出来网页。作为iOS开荒者,在此地详细介绍一下UIWebView控件的运用。

当网页加载达成之后,就足以很自在的得到当前加载网页的<body>,那样的话大家就能够经超过实际行js代码举行管理原本的网页

UIWebView是iOS内置的浏览器控件

二、概念

 NSString *html = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML;"];

系统自带的Safari浏览器就是经过UIWebView实现的

什么是UIWebView呢?

透过上边这么些情势能够拿走网页的布局,在自身不分明网页结构的情景下,能够打字与印刷出来看一下,这样就足以很轻巧找到自个儿要拍卖的内容。

UIWebView不但能加载远程的网页财富,还能够加载绝超越百分之五十的大范围文件举个例子:

UIWebView是UIKit下放置的浏览器控件,能够用它来浏览网页、张开文书档案等居多效果;UIWebView是叁个混合体,承袭自UIView,遵守UIScrollViewDelegate和睦,具备delegate和scrollView属性和一密密麻麻代理方法;系统自带的Safari正是UIWebView完成的。

接下来实行js代码,能够由此上面包车型客车法子开展加载js代码,

htmlhtm

三、作用

 - (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;

pdf、doc、ppt、txt

看概念UIWebView貌似很牛X,它都能落到实处如何的机能吗?

要留心的是参数是字符串,所以大家必要把代码包装在字符串里面

mp4

1.加载html/htm网页,提供网页与系统的交互桥梁

 NSMutableString *js = [NSMutableString stringWithString:@"这里写js代码"];

… …

2.加载pdf文件、docx文件、ppt文件、txt文件等

多行js代码之间可以使用反斜线连接。举个栗子:

UIWebView常用的加载财富的章程

3.加载mp4文件

 NSMutableString *js = [NSMutableString stringWithString:@" var footer = document.getElementsByTagName[0]; footer.parentNode.removeChild; var header = document.getElementsByTagName[0]; header.parentNode.removeChild; "];
  • loadRequest:(NSURLRequest *)request;

4.加载局部别的显示类的文书

接下来实践js

必威 11.png

四、基本用法

 [webView stringByEvaluatingJavaScriptFromString:js];

常用属性和艺术

#pragma mark –文件显示方式与步骤-

如此这般就足以将协和加上的js增加到加载到得网页中。

再次加载

// 1.创立webView,并增多到self.view

2>使用JS调用OC的代码应用JS调用OC并不是像上面的那么简单.这里会动用UIWebView的别的的壹个代理方法

UIWebView *webView = [[UIWebView alloc]init];

 - webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

reload;

CGRectframe = self.view.bounds;

上面这么些法子在历次举行加载网页的时候都会试行,能够监听每一趟webView发送的央浼,如若重返值是 YES, 则表明能够扩充加载网页, 假如重回的是 NO, 则表达禁止加载该网页.那那个主意应该怎么利用啊?因为在JS中不能直接调用OC的艺术,大家的思路是将js中的事件转化成自定义的一种左券,当推行合同时,webView的代办方法开展监听,假若本身索要的方法,则能够推行OC方法.下边看了一段HTML代码

悬停加载

webView.frame= frame;

<body> <div> <button onclick="fn_click();">按钮1</button> </div><script type="text/javascript"> function fn_click() { // 自定义协议,进行动态跳转 window.location.href = 'dz://click'; }</script></body>

[self.view addSubview:webView];

接下来对网页举办监听

stopLoading;

// 2.分明文件路线

- webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSString *url = request.URL.absoluteString; // 判断请求是否是自定义的,如果是自定义的,则进行处理 NSRange range = [url rangeOfString:@"dz://"]; NSUInteger loc = range.location; if (loc != NSNotFound) { NSString *method = [url substringFromIndex:loc + range.length]; // 取出JS方法的方法名 SEL sel = NSSelectorFromString; // 将JS方法名转化为OC的方法名 [self performSelector:sel withObject:nil]; } return YES;}

回退

NSURL *fileUrl = [[NSBundle mainBundle]URLForResource:@"详谈WebView" withExtension:@"html"];

透过上边的一段代码,就能够在OC中调用JS方法。

// 3.加载恳求(就要文件展现到webView上)

- click { NSLog(@“点击了btn”);}

goBack;

NSURLRequest *request = [NSURLRequestrequest WithURL:fileUrl];

前进

[webView loadRequest:request];

//也辅助直接加载html

goForward;

// NSString *htmlStr = @"也支持直接加载html";

亟待展开检查评定的数据类型

// [webView loadHTMLString:htmlStrbaseURL:nil];

@property(nonatomic)UIDataDetectorTypes dataDetectorTypes

//要是呈现pdf文件、docx文件、ppt文件、txt文件、mp5文件等,只须求将fileUrl替换来对应的文本,如:

是或不是能回落

fileUrl = [[NSBundle mainBundle]URLForResource:@"详谈WebView" withExtension:@"pdf"];

@property(nonatomic,readonly,getter=canGoBack) BOOL canGoBack;

显示结果如图

是或不是能开发进取

必威 2

@property(nonatomic,readonly,getter=canGoForward) BOOL canGoForward;

必威 3

是不是正在加载中

必威 4

@property(nonatomic,readonly,getter=isLoading) BOOL loading;

必威 5

是否伸缩内容至适应显示屏当前尺寸

必威 6

@property(nonatomic) BOOL scalesPageToFit;

必威 7

监听UIWebView的加载进程

必威 8

成为UIWebView的代办,服从UIWebViewDelegate合同,就会监听UIWebView的加载进程

那个是本土文件,假若是长途服务器文件,只供给将本地url替换到远程url(

初始发送央求时调用这些主意

#pragma mark–UIWebView基本措施-

/**

webViewDidStartLoad:(UIWebView *)webView;

*   刷新WebView页面

央求完结时调用这几个法子

*/

- (void)reload{

webViewDidFinishLoad:(UIWebView *)webView;

[self.webView reload];

呼吁错误时调用这几个点子

}

  • webView:(UIWebView*)webView didFailLoadWithError:error;

/**

监听UIWebView的加载进度

*    截止加载WebView页面

UIWebView在发送央浼之前,都会调用那一个办法,假使回去NO,代表结束加载诉求,再次来到YES,代表允许加载央浼

*/

  • webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType;

- (void)stopLoading{

JavaScript

[self.webView stopLoading];

什么是JavaScript

}

JavaScript是一门脚本语言,简称JS

/**

JS的广泛作用有

*    后退到上多少个WebView页面

给HTML网页增多动态作用,譬喻响应顾客的各个操作

*/

垄断HTML元素,比方加多、删除、修改网页成分

- (void)goBack{

常见的JavaScript函数

// webView提供判断可后退的法门

alert; 弹框

if([self.webView canGoBack]) {

document.getElementById;依据ID获得某些DOM成分

[self.webView goBack];

OC中调用JavaScipt

}

如何在OC中调用JavaScript代码

}

采用UIWebView的stringByEvaluatingJavaScriptFromString方法就能够

/**

****************************笔记*************************

*    再回去到落后前的WebView页面

  1. WebView的主题使用

*/

1 概念性知识

- (void)goForward{

01webView是有劣点的,会导致内部存储器败露,何况以此难题是它系统自个儿的主题素材。

// webView提供剖断可提升的方法

02 手提式有线电话机上边的safai其实正是用webView来兑现的

if([self.webView canGoForward]) {

03 今后的付出并不完全部都是原生的开荒,而更是侧向于原生+Html5的措施

[self.webView goForward];

04webView是OC代码和html代码之间进行互相的大桥

}

2 代码相关

}

网页操控相关办法

五、代理方法

[self.webView goBack]; 回退

#pragma mark -UIWebView代理方法-

[self.webView goForward]; 前进

//实当代理方法要求先安装代理(监听网页的加载进程)

[self.webView reload]; 刷新

webView.delegate=self;

设置是不是可以发展和回降

/**

self.goBackBtn.enabled = webView.canGoBack;

*每当webView就要发送二个呼吁前,先调用那一个格局

self.fowardBtn.enabled = webView.canGoForward;

成效:一般用来堵住webView发出的全部的呼吁(加载新的网页)

B常用的习性设置

@paramrequest将要在发生的呼吁

本文由必威发布于必威-编程,转载请注明出处:的代理方法必威:,UIWebView常用的加载资源的方

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。