webView

在IOS中原生控件很多.能自定义的控件也很多.但在视图界面的开发上如果用原生的控件去做就显得非常麻烦了.在我已知的技术中拥有最便捷和效果最好的视图技术展示技术中.最优秀的就要属网页.假如用到HTML来展示视图界面的话.我们就需要一个承载的容器.这个容器IOS已经帮我们提供好了,那就是我们今天的主角UIWebView控件.
准备工作:
一个完整的html页面.
一.将html网页加载进入UIWebView容器中
在”-(void)viewDidLoad”方法中加入如下代码
NSString *webPath = [[NSBundlemainBundle]pathForResource:@“HelloWord”ofType:@”html”];//获取文件路径
NSURL *webURL = [NSURLfileURLWithPath:webPath];//通过文件路径字符串设置URL
NSURLRequest *URLRequest = [NSURLRequestrequestWithURL:webURL];//设置请求提交的相关URL
[self.webViewloadRequest:URLRequest];//提交请求
二.加入UIWebViewDelegate委托(如果想要进行相应的数据交互必须添加相应的我委托)
1.-(BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType//html页面的js动作触发时运行
2.-(void)webViewDidFinishLoad:(UIWebView *)webView //html加载完后触发
三.OC提交JS请求.运行JS方法
[self.webViewstringByEvaluatingJavaScriptFromString:@”方法名(%@)”,参数]];
四.JS提交请求到OC
在-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType中添加如下代码:
NSString *requestString = [[requestURL]absoluteString];//获取请求的绝对路径.

NSArray *components = [requestStringcomponentsSeparatedByString:@”:”];//提交请求时候分割参数的分隔符

if ([componentscount] >1 && [(NSString *)[components objectAtIndex:0]isEqualToString:@”testapp”]) {

//过滤请求是否是我们需要的.不需要的请求不进入条件

if([(NSString *)[components objectAtIndex:1]isEqualToString:@”change”])

{

//所要执行的操作

}

returnNO;

}

returnYES;

附上document、location、body 属性方法 JS 对象
document:属性
document.title //设置文档标题等价于HTML的标签
document.bgColor //设置页面背景色
document.fgColor //设置前景色(文本颜色)
document.linkColor //未点击过的链接颜色
document.alinkColor //激活链接(焦点在此链接上)的颜色
document.vlinkColor //已点击过的链接颜色
document.URL //设置URL属性从而在同一窗口打开另一网页
document.fileCreatedDate //文件建立日期,只读属性
document.fileModifiedDate //文件修改日期,只读属性
document.fileSize //文件大小,只读属性
document.cookie //设置和读出cookie
document.charset //设置字符集 简体中文:gb2312
document:方法
document.write() //动态向页面写入内容
document_createElement_x_x(Tag) //创建一个html标签对象
document.getElementByIdx_x_x(ID) //获得指定ID值的对象
document.getElementsByName(Name) //获得指定Name值的对象
document.body.a(oTag)
body:子对象
document.body //指定文档主体的开始和结束等价于
document.body.bgColor //设置或获取对象后面的背景颜色
document.body.link //未点击过的链接颜色
document.body.alink //激活链接(焦点在此链接上)的颜色
document.body.vlink //已点击过的链接颜色
document.body.text //文本色
document.body.innerText //设置…之间的文本
document.body.innerHTML //设置…之间的HTML代码
document.body.topMargin //页面上边距
document.body.leftMargin //页面左边距
document.body.rightMargin //页面右边距
document.body.bottomMargin //页面下边距
document.body.background //背景图片
document.body.a(oTag) //动态生成一个HTML对象
location:子对象
document.location.hash // #号后的部分
document.location.host // 域名+端口号
document.location.hostname // 域名
document.location.href // 完整URL
document.location.pathname // 目录部分
document.location.port // 端口号
document.location.protocol // 网络协议(http:)
document.location.search // ?号后的部分
常用对象事件:
documeny.location.reload() //刷新网页
document.location.reload(URL) //打开新的网页
document.location.assign(URL) //打开新的网页
document.location.replace(URL) //打开新的网页
selection-选区子对象
document.selection

05-07
### Webview 技术介绍 Webview 是一种嵌入式浏览器组件,允许开发者在其应用中加载并渲染网页内容。它广泛应用于移动开发领域(如 Android 和 iOS),同时也支持桌面端的应用场景(如 Windows)。以下是关于 Webview 的详细介绍: #### 1. **Webview 的基本概念** Webview 提供了一种简单的方式来集成 HTML、CSS 和 JavaScript 到原生应用程序中。通过这种方式,开发者可以在同一界面中实现本地功能和网络资源的无缝交互[^2]。 #### 2. **主要特点** - **跨平台能力** Webview 基于 WebKit 引擎或其他现代浏览器引擎构建,能够运行在多个操作系统上,从而减少重复编码的工作量[^2]。 - **动态更新** 应用程序可以通过 Webview 实现即时的内容刷新,这对于新闻客户端或社交媒体类应用尤为重要[^2]。 - **安全性保障** 大多数 Webview 都内置了沙箱机制,有效隔离外部网站与宿主环境之间的数据交换,降低潜在风险[^2]。 #### 3. **不同平台下的 Webview** ##### (1) **Windows 平台上的 Flutter WebView** 对于希望利用 Dart 编程语言创建跨平台 GUI 应用的开发者来说,“flutter-webview-windows”是一个不错的选择。该项目基于 Microsoft Edge 的 WebView2 控件开发而成,提供了高性能以及良好的兼容性[^1]。 示例代码如下: ```dart import 'package:flutter_webview_windows/flutter_webview_windows.dart'; void main() { final webView = FlutterWebviewWindows(); webView.createWindow( title: "Example", width: 800, height: 600, url: Uri.parse('https://www.example.com'), ); } ``` ##### (2) **Android 上的 WebView** 在 Android 中,`android.webkit.WebView` 类被用来处理页面加载逻辑。除了常规操作外,还可以自定义设置来增强用户体验,比如启用 JavaScript 支持或者调整缩放比例[^4]。 配置样例: ```java WebView myWebView = findViewById(R.id.webview); myWebView.getSettings().setJavaScriptEnabled(true); // 启动 JS 功能 myWebView.setWebViewClient(new WebViewClient()); // 确保链接点击不会跳转到默认浏览器 myWebView.loadUrl("http://developer.android.com"); ``` ##### (3) **Unity 游戏引擎中的 WebView 插件** 如果目标是将互联网服务引入 Unity 构建的游戏里,则可以选择 “gree/unity-webview”。此插件经过优化后更加稳定可靠,并且易于集成至现有项目之中[^3]。 安装方法提示: ```bash git clone https://gitcode.com/gh_mirrors/uni/Unity-Webview.git cd Unity-Webview open YourProjectInUnity/ ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值