前端UNIAPP端webview嵌入H5使用说明文档

一、关闭webView窗口

plus.webview.close( id_wvobj, aniClose, duration, extras );
  • 功能说明

关闭已经打开的Webview窗口,需先获取窗口对象或窗口id,并可指定关闭窗口的动画及动画持续时间。

  • 参数说明
参数是否必须参数类型/固定值说明
id_wvobjString 要关闭Webview窗口id或窗口对象,若操作窗口对象已经关闭,则无任何效果。 使用窗口id时,则查找对应id的窗口,如果有多个相同id的窗口则操作最先打开的窗口,若没有查找到对应id的WebviewObject对象,则无任何效果。
aniClose
  1. auto (默认值):自动选择关闭动画效果。
  2. none:无动画效果,直接关闭。
  3. slide-out-right:从右向左滑出关闭动画。
  4. slide-out-left:从左向右滑出关闭动画。
关闭Webview窗口的动画效果,如果没有指定关闭窗口动画,则使用默认值“auto”,即使用显示时设置的窗口动画相对应的关闭动画。
durationNumber 关闭Webview窗口动画的持续时间,单位为ms,如果没有设置则使用显示窗口动画时间。
extras任意类型关闭Webview窗口扩展参数,可用于指定Webview窗口动画是否使用图片加速。
  • 使用示例
 function closeWebview(){var ws=plus.webview.currentWebview();plus.webview.close(ws);
}

二、创建新的webView窗口

plus.webview.create( url, id, styles, extras );
  • 功能说明

创建Webview窗口,用于加载新的HTML页面,可通过styles设置Webview窗口的样式,创建完成后需要调用show方法才能将Webview窗口显示出来。

  • 参数说明
参数是否必须参数类型/示例说明
urlString 新窗口加载的HTML页面地址,新打开Webview窗口要加载的HTML页面地址,可支持本地地址和网络地址。
idString 新窗口的标识,窗口标识可用于在其它页面中通过getWebviewById来查找指定的窗口,为了保持窗口标识的唯一性,应该避免使用相同的标识来创建多个Webview窗口。 如果传入无效的字符串则使用url参数作为WebviewObject窗口的id值。
styles

JSON 

创建Webview窗口的样式(如窗口宽、高、位置等信息)WebviewStyles
extrasObject 创建Webview窗口的额外扩展参数,值为JSON类型,设置扩展参数后可以直接通过Webview的点(“.”)操作符获取扩展参数属性值,
如: var w=plus.webview.create('url.html','id',{},{preload:'preload webview'});
// 可直接通过以下方法获取preload值 console.log(w.preload);
// 输出值为“preload webview”
  • 使用示例
function create(){var w = plus.webview.create('http://m.weibo.cn/u/3196963860');w.show(); // 显示窗口
}

三、获取当前窗口的WebviewObject对象

plus.webview.currentWebview();
  • 功能说明

获取当前页面所属的Webview窗口对象。

  • 使用示例
var ws=plus.webview.currentWebview();
console.log( "当前Webview窗口:"+ws.getURL() );

四、隐藏Webview窗口

plus.webview.hide( id_wvobj, aniHide, duration, extras );
  • 功能说明

根据指定的WebviewObject对象或id隐藏Webview窗口,使得窗口不可见。

  • 参数说明
参数是否必须参数类型/固定值说明
id_wvobjString 要隐藏的Webview窗口id或窗口对象,使用窗口对象时,若窗口对象已经隐藏,则无任何效果。 使用窗口id时,则查找对应id的窗口,如果有多个相同id的窗口则操作最先打开的,若没有查找到对应id的WebviewObject对象,则无任何效果。
aniHide
  1. auto (默认值):自动选择关闭动画效果。
  2. none:无动画效果,直接关闭。
  3. slide-out-right:从右向左滑出关闭动画。
  4. slide-out-left:从左向右滑出关闭动画。

···

隐藏Webview窗口的动画效果,如果没有指定窗口动画,则使用默认动画效果“none”。
durationNumber 隐藏Webview窗口动画的持续时间,单位为ms,如果没有设置则使用默认窗口动画时间。
extrasJSON对象隐藏Webview窗口扩展参数,可用于指定Webview窗口动画是否使用图片加速。
  • 使用示例
function hideWebview(){plus.webview.hide(plus.webview.currentWebview());
}

五、显示Webview窗口

plus.webview.show( id_wvobj, aniShow, duration, showedCB, extras );
  • 功能说明

显示已创建或隐藏的Webview窗口,需先获取窗口对象或窗口id,并可指定显示窗口的动画及动画持续时间。

  • 参数说明
参数是否必须参数类型/固定值说明
id_wvobj

String

要显示Webview窗口id或窗口对象,若操作Webview窗口对象显示,则无任何效果。 使用窗口id时,则查找对应id的窗口,如果有多个相同id的窗口则操作最先创建的窗口,若没有查找到对应id的WebviewObject对象,则无任何效果。
aniShow 
  1. auto (默认值):自动选择显示动画效果。
  2. none:无动画效果,直接显示。
  3. slide-in-right:从右向左滑出显示动画。
  4. slide-in-left:从左向右滑出显示动画。

···

显示Webview窗口的动画效果,如果没有指定窗口动画类型,则使用默认值“auto”,即自动选择上一次显示窗口的动画效果,如果之前没有显示过,则使用“none”动画效果。AnimationTypeShow
durationNumber 显示Webview窗口动画的持续时间,单位为ms,单位为ms,如果没有设置则使用默认窗口动画时间600ms。
showedCB

onSuccess(){ // Success code. }

onError(error){

var code = error.code; // 错误编码

var message = error.message; // 错误描述信息

}

Webview窗口显示完成的回调函数,当指定Webview窗口显示动画执行完毕时触发回调函数,窗口无动画效果(如"none"动画效果)时也会触发此回调。
  • 使用示例
function create(){var w = plus.webview.create('http://m.weibo.cn/u/3196963860');plus.webview.show(w); // 显示窗口
}

六、创建并打开Webview窗口

plus.webview.open( url, id, styles, aniShow, duration, showedCB );
  • 功能说明

创建并显示Webview窗口,用于加载新的HTML页面,可通过styles设置Webview窗口的样式,创建完成后自动将Webview窗口显示出来。

  • 参数说明
参数是否必须参数类型/固定值说明
urlString 打开窗口加载的HTML页面地址,新打开Webview窗口要加载的HTML页面地址,可支持本地地址和网络地址。
id

String

打开窗口的标识,窗口标识可用于在其它页面中通过getWebviewById来查找指定的窗口,为了保持窗口标识的唯一性,应该避免使用相同的标识来创建多个Webview窗口。 如果传入无效的字符串则使用url参数作为WebviewObject窗口的id值。
styles

JSON 

创建Webview窗口的样式(如窗口宽、高、位置等信息)WebviewStyles
aniShow 
  1. auto (默认值):自动选择关闭动画效果。
  2. none:无动画效果,直接关闭。
  3. slide-in-right:从右向左滑出关闭动画。
  4. slide-in-left:从左向右滑出关闭动画。

···

显示Webview窗口的动画效果,如果没有指定窗口动画,则使用默认无动画效果“none”。AnimationTypeShow
durationNumber 显示Webview窗口动画的持续时间,单位为ms,默认值为200ms(毫秒)。
showedCB

onSuccess(){ // Success code. }

onError(error){

var code = error.code; // 错误编码

var message = error.message; // 错误描述信息

}

Webview窗口显示完成的回调函数,当指定Webview窗口显示动画执行完毕时触发回调函数,窗口无动画效果(如"none"动画效果)时也会触发此回调。
  • 使用示例
function openWebview(){var w = plus.webview.open('http://m.weibo.cn/u/3196963860');
}

七、预载网络页面

plus.webview.prefetchURL(url);
  • 功能说明

预载网络页面会向服务器发起http/https请求获取html页面内容, 待Webview窗口加载此url页面时会则根据缓存机制优先使用预载的页面内容(加快页面显示速度)。 注意:预载网络页面仅在运行期生效,为了节省内存仅保留最后5个预载页面数据。

  • 参数说明
参数是否必须参数类型/固定值说明
urlString 需要预载的页面地址,必须是网络地址(http/https),本地页面地址无需预载。
  • 使用示例
var url = 'http://m.weibo.cn/u/3196963860';// 预载网络页面
function prefetchWebview(){plus.webview.prefetchURL(url);
}// 显示预载页面
function showWebview(){// 预创建新窗口(显示在可视区域外)wn=plus.webview.create(url, 'test',{render:'always'});wn.show('none');
}

八、Webview的一些常用方法

1. addEventListener: 添加事件监听器

  • 参数说明
    • 参数是否必须可选参数说明
      event

      "close": (String 类型 )Webview窗口关闭事件

      "error": (String 类型 )Webview窗口加载错误事件

      "hide": (String 类型 )Webview窗口隐藏事件

      "loading": (String 类型 )Webview窗口页面开始加载事件

      "loaded": (String 类型 )Webview窗口页面加载完成事件

      "maskClick": (String 类型 )Webview窗口显示遮罩层时点击事件

      "touchstart": (String 类型 )Webview窗口接收到触屏事件

      "popGesture": (String 类型 )Webview窗口侧滑返回事件

      更多事件

      Webview窗口事件类型
      listener

      void onEvent(Event event){ // Event handled code. }

      监听事件发生时执行的回调函数
      capture Boolean捕获事件流顺序,暂无效果

    • 示例代码
plus.nativeUI.showWaiting()
var ws = null,embed = null;
ws = this.$scope.$getAppWebview(); //plus.webview.currentWebview();在uni-app里vue页面直接使用无效,非v3编译模式使用this.$mp.page.$getAppWebview()
embed = plus.webview.create(this.url, '', {top: getApp().globalData.bh + 35 + "px",bottom: '0px'
});
ws.append(embed);//监听webview窗口事件
embed.addEventListener('loaded', function() {if (embed.isVisible()) {plus.nativeUI.closeWaiting()// 页面加载完成且可见时的操作}
});

2. append: 在Webview窗口中添加子窗口

  • 说明

将另一个Webview窗口作为子窗口添加到当前Webview窗口中,添加后其所有权归父Webview窗口,当父窗口关闭时子窗口自动关闭。

被添加的Webview窗口需通过plus.webview.create方法创建,并且不能调用其show方法进行显示。 父窗口显示时子窗口会自动显示,父窗口隐藏时子窗口也会自动隐藏。 被添加的View控件需通过new plus.nativeObj.View()创建,添加到Webview窗口后所有权一起转移(即Webview关闭后View控件也自动关闭)。

  • 示例代码

var ws = null,embed = null;
ws = this.$scope.$getAppWebview(); //plus.webview.currentWebview();在uni-app里vue页面直接使用无效,非v3编译模式使用this.$mp.page.$getAppWebview()
embed=plus.webview.create('http://m.weibo.cn/u/3196963860', '',{top:'46px',bottom:'0px'});
ws.append(embed);

3. appendJsFile: 添加Webview窗口预加载js文件

  • 说明

对于一些网络HTML页面,在无法修改HTML页面时可通过此方法自动加载本地js文件。 当Webview窗口跳转到新页面时也会自动加载指定的js执行,添加多个js文件将按照添加的先后顺序执行。

  • 示例代码
// 添加Webview窗口预加载js文件
function appendJs2Webviewe(){var nw=plus.webview.create('http://m.weibo.cn/u/3196963860');nw.appendJsFile('_www/preload.js');nw.show();
}

4. checkRenderedContent: 检测Webview窗口是否渲染完成

  • 说明

检测方式为判断的Webview窗口内容是否为白屏,如果非白屏则认为渲染完成,否则认为渲染未完成。 通过successCallback回调函数返回结果,如果检测过程中发生错误则触发errorCallback回调函数。

successCallback: ( Function ) 必选 检测Webview窗口渲染结果回调函数
获取渲染检测结果后触发,函数原型为void function(e){}; e.rendered:表示检测渲染完成结果,Boolean类型,true表示渲染完成,false表示渲染未完成。

errorCallback: ( ErrorCallback ) 可选 检测Webview窗口渲染结果失败回调函数
检测Webview窗口渲染结果过程中发生错误则触发errorCallback回调函数

此方法不支持iOS

  • 示例代码
// 创建Webview窗口
function createWebview(){// 打开新窗口nw=plus.webview.create('http://m.weibo.cn/u/3196963860');nw.show();
}
function checkWebview(){nw.checkRenderedContent({}, function(e){console.log('checkRenderedContent success: '+JSON.stringify(e));}, function(e){console.log('checkRenderedContent error: '+JSON.stringify(e));});
}

5. interceptTouchEvent: 是否拦截Webview窗口的触屏事件

  • 说明

拦截后触屏事件不再传递,否则传递给View控件下的其它窗口处理。 Webview窗口默认拦截所有触屏事件。

intercept: ( Boolean ) 可选 是否拦截触屏事件
true表示拦截触屏事件,false表示不拦截触屏事件(透传事件给其它窗口处理)。 默认值为true。

Android - 3.0+ (支持)
iOS - ALL (不支持)

  • 示例代码
var wv=null;
wv = plus.webview.currentWebview();
// 拦截触屏事件 
function interceptEvent(){wv.interceptTouchEvent(true);
}
// 不拦截触屏事件 
function uninterceptEvent(){wv.interceptTouchEvent(false);
}

6. isVisible: 查询Webview窗口是否可见

  • 说明

若Webview窗口已经显示(调用过show方法,即使被其它窗口挡住了也认为已显示)则返回true,若Webview窗口被隐藏则返回false。

  • 示例代码
ws=plus.webview.currentWebview();
embed=plus.webview.create('http://m.weibo.cn/u/3196963860', '', {top:'46px',bottom:'0px'});
embed.show();// 查询Webview窗口是否可见
function visibleWebview() {alert('是否可见:'+embed.isVisible());
}
// 隐藏Webview窗口
function hideWebview() {embed.hide();
}

7. overrideResourceRequest: 拦截Webview窗口的资源加载

  • 说明

根据区配规则拦截Webview窗口加载资源的URL地址,重定向到其它资源地址(暂仅支持本地地址)。 注意:多次调用overrideResourceRequest时仅以最后一次调用设置的参数值生效。

  • 示例代码
var ws=null,nw=null;
ws=plus.webview.currentWebview();
// 拦截Webview窗口的资源请求
nw=plus.webview.create('http://m.weibo.cn/u/3196963860');nw.overrideResourceRequest([{match:'http://tva3.sinaimg.cn/crop.121.80.980.980.180/be8dcc14gw1e7lz65y6g3j20uo0uoq4r.jpg',redirect:'_www/logo.png'}]);nw.show();

8. overrideUrlLoading: 拦截Webview窗口的URL请求

  • 说明

拦截URL请求后,Webview窗口将不会跳转到新的URL地址,此时将通过callback回调方法返回拦截的URL地址(可新开Webview窗口加载URL页面等)。 此方法只能拦截窗口的网络超链接跳转(包括调用loadURL方法触发的跳转),不可拦截页面请求资源请求(如加载css/js/png等资源的请求)。 注意:多次调用overrideUrlLoading时仅以最后一次调用设置的参数值生效。

  • Options属性
属性类型取值说明作用
effectString

可取值: "instant" - 表示立即生效,即调用overrideUrlLoading方法后立即生效;

"touchstart" - 表示用户操作Webview窗口(触发touchstart事件)后生效,如果用户没有操作Webview窗口则不对URL请求操作进行拦截处理。 默认值为"instant"。

拦截URL请求生效时机
modeString

可取值: "allow"表示满足match属性定义的条件时不拦截url继续加载,不满足match属性定义的条件时拦截url跳转并触发callback回调;

"reject"表示满足match属性定义的提交时拦截url跳转并触发callback回调,不满足match属性定义的条件时不拦截url继续加载。

默认值为"reject"。

拦截模式
matchString

支持正则表达式,默认值为对所有URL地址生效(相当于正则表达式“.*”)。

如果mode值为"allow"则允许区配的URL请求跳转,mode值为"reject"则拦截区配的URL请求。

匹配是否需要处理的URL请求
excludeString

不拦截处理指定类型的URL请求,直接使用系统默认处理逻辑。

可取值: "none"表示不排除任何URL请求(即拦截处理所有URL请求);

"redirect"表示排除拦截处理301/302跳转的请求(谨慎使用,非a标签的href触发的URL请求可能会误判断为302跳转)。

默认值为"none"。

  • 排除拦截处理请求类型
  • 示例代码
ws=plus.webview.currentWebview();
nw=plus.webview.create('http://m.weibo.cn/u/3196963860');
nw.show();var regex = "^https://brain.*";
nw.overrideUrlLoading({mode:'allow',match: regex,
}, function(e){console.log('reject url: '+e.url);
});

九、参考文档

参考文档地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/749118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPT-3后的下一步:大型语言模型的未来方向

摘要: 本文将概述GPT-3后的下一步:大型语言模型的未来方向,包括技术发展趋势、应用场景、挑战与机遇。 引言: GPT-3是OpenAI于2020年发布的一款大型语言模型,它在自然语言处理领域取得了突破性进展。GPT-3的出现标志…

全国农产品价格分析预测可视化系统设计与实现

全国农产品价格分析预测可视化系统设计与实现 【摘要】在当今信息化社会,数据的可视化已成为决策和分析的重要工具。尤其是在农业领域,了解和预测农产品价格趋势对于农民、政府和相关企业都至关重要。为了满足这一需求,设计并实现了全国农产…

RabbitMQ 面试题及答案整理,最新面试题

RabbitMQ的核心组件有哪些? RabbitMQ的核心组件包括: 1、生产者(Producer): 生产者是发送消息到RabbitMQ的应用程序。 2、消费者(Consumer): 消费者是接收RabbitMQ消息的应用程序…

哥斯拉流量webshell分析-->ASP/PHP

哥斯拉流量webshell分析 哥斯拉是继菜刀、蚁剑、冰蝎之后的又一个webshell利器,这里就不过多介绍了。 哥斯拉GitHub地址:https://github.com/BeichenDream/Godzilla 很多一线师傅不太了解其中的加解密手法,无法进行解密,这篇文章…

Vue.js基础

表单输入绑定 基础用法 v-model 指令在表单 <input>、<textarea>及 <select> 元素上创建双向数据绑定。 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据&#xff0c;并对一些极端场景进行一些特殊处理。 vue 模板语法包括两大类 插值语法…

Java算法之数论基础

Java算法之数论基础 一、最大公约数&#xff08;Greatest Common Divisor, GCD&#xff09; 在Java中&#xff0c;我们可以使用欧几里得算法&#xff08;辗转相除法&#xff09;来求两个数的最大公约数&#xff1a; 辗转相除法&#xff08;欧几里得算法&#xff09; 辗转相…

会议室预约系统优化(蓝桥杯)

文章目录 会议室预约系统优化问题描述差分 会议室预约系统优化 问题描述 假设你是一家大型企业的 IT 工程师&#xff0c;企业内有 n 个会议室&#xff0c;每天都有多个部门预约会议室进行会议。你的任务是优化现有的会议室预约系统。 你需要设计一个程序来支持以下两种操作…

Web3社交项目UXLINK零撸教程

简介&#xff1a;UXLINK是Web3行业中首个主打双向、熟人社交关系的产品&#xff0c;与其他社交基础设施类项目相比&#xff0c;类似Twitter Vs Facebook、微博 Vs 微信的社交结构区别。UXLINK的愿景&#xff1a;1、社交中心&#xff1a;成为最大的社交平台&#xff0c;专注于真…

goctl-swagger 生成json接口文件

参考&#xff1a; GitHub - dyntrait/goctl-swagger: 通过 api 文件生成 swagger 文档 GitHub - Bluettipower/goctl-swagger 一:编译 执行go install 前一般需要设置环境&#xff0c;不然资源经常会下载不下载 go env -w GOPROXYhttps://goproxy.cn,direct 执行完 go in…

C++/CLI学习笔记4(快速打通c++与c#相互调用的桥梁)

3.4声明多个变量 同一个语句可声明同类型的多个变量&#xff0c;用逗号分隔即可&#xff0c;如下所示:int x 10, y, z 11; 该语句声明int变量x,y和z。第一个初始化为10&#xff0c;第二个未初始化&#xff0c;第三个初始化为11。 3.5变量赋值 使用赋值操作符(等号)向变量…

IO流(主要是记住四大类InputStream,OutputStream、Reader和Writer,其他都是他们的子类)

IO流 1、文件 &#xff08;1&#xff09;文件概念 文件就是保存数据的地方。例如word文档&#xff0c;txt文件&#xff0c;execl文件等等。 &#xff08;2&#xff09;文件流 文件在程序中是以流的形式来操作的。 流&#xff1a;数据在数据源&#xff08;文件&#xff09;…

【Python】Python中的正则表达式

Python中的正则表达式 1.re模块使用入门 1.1 re.match 函数 函数定义&#xff1a; re.match 尝试从字符串的起始位置匹配一个模式&#xff0c;如果不是起始位置匹配成功的话&#xff0c;match() 就返回 none。 函数语法&#xff1a; re.match(pattern, string, flags0) …

ASR语音识别纠错-fast correct

1、使用方式说明 ASR对应的文本越长&#xff0c;识别准确率和召回率越高 识别的错误分类&#xff1a; 编号错误类型示例1谐音字词配副眼睛-配副眼镜2混淆音字词流浪织女-牛郎织女3多字错误关关机-关机4少字错误 爱有天意-假如爱有天意 5形似字错误高梁-高粱6中文拼音全拼xin…

二叉树【Java】

二叉树遍历 前序遍历 中序遍历 后续遍历 代码 前 中 后序遍历 package Trww;public class TreeTraversal {/*12 34 5 6*/public static void main(String[] args) {TreeNode tree new TreeNode(new TreeNode(new TreeNode(4),2,null),1,new TreeNode(new TreeNode(5),3,n…

Lua使用三目运算符取值

按照三目运算符的规则&#xff0c;lua的三目运算符可以写成&#xff1a;a and b or c b为false时&#xff0c;三目运算符是无效的。 提示&#xff1a;0在lua里也是真&#xff0c;condition and 0 or 1 这句代码没问题 如果你确认b为真&#xff0c;那么就用a and b or c&…

maven私服搭建详细教程

1、为什么需要私服 如果在公司中多个项目模块中的的公共类用的都是一样的&#xff0c;那么不可能将这些一样的代码写两遍。所以将其中一个项目中的代码打包成私服&#xff0c;然后在另外一个模块中去进行引用。 除此之外&#xff0c;如果大公司中开发人员较多&#xff0c;大家同…

什么是多模态学习?

1、定义与概念 多模态学习是一种机器学习方法&#xff0c;它利用多种不同的数据模态来训练模型&#xff0c;这些模态可能包括文本、图像、音频、视频等。多模态AI技术融合了多种数据模式&#xff0c;如文本、图片、视频和音频&#xff0c;以提供对场景的更透彻理解。这种技术的…

《ElementPlus 与 ElementUI 差异集合》icon 图标使用(包含:el-button,el-input和el-dropdown 差异对比)

安装 注意 ElementPlus 的 Icon 图标 要额外安装插件 element-plus/icons-vue. npm install element-plus/icons-vue注册 全局注册 定义一个文件 element-icon.js &#xff0c;注意代码第 6 行。加上了前缀 ElIcon &#xff0c;避免组件命名重复&#xff0c;且易于理解为 e…

Java开发从入门到精通(七):Java的面向对象编程OOP:常用API

Java大数据开发和安全开发 &#xff08;一&#xff09;Java的常用API1.1 Object类1.1 toString1.1 equals方法1.1 对象克隆clone1.1 Objects类1.1 包装类1.1 StringBuilder1.1 StringBuffer1.1 StringJoiner1.1 Math、System、Runtime1.1 BigDecimal1.1 传统时间&#xff1a;Da…

TinTin Web3 动态精选:以太坊坎昆升级利好 Layer2,比特币减半进入倒计时

TinTin 快讯由 TinTinLand 开发者技术社区打造&#xff0c;旨在为开发者提供最新的 Web3 新闻、市场时讯和技术更新。TinTin 快讯将以周为单位&#xff0c; 汇集当周内的行业热点并以快讯的形式排列成文。掌握一手的技术资讯和市场动态&#xff0c;将有助于 TinTinLand 社区的开…