
微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验。同时提供一系列工具帮助开发者快速接入并完成小程序开发。关于如何注册配置就不多言了,本文主要还是体验了下 web-view 的功能。
有了这个组件之后,小程序可以很好的嵌入一些页面,可以环境小程序 size 告急的问题,同样也使开发更加便捷,毕竟小程序开发者基本都对前端开发较为了解。
说再多还是需要去看官方文档, web-view文档 ,
首先就需要注意:兼容问题, 版本库和对应版本比例
目前而言,基本 80% 的用户会升级微信,所以其实不必担心版本问题,官方截止 2017-12-01 提供的数据也说明 88% 的用户支持 web-view 。
web-view 组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面;
属性: src 是 String 类型,是一个网站的 url ,默认值是 none , webview 指向网页的链接。需登录小程序管理后台配置域名白名单。
可以配合 Page 实例的 onLoad 方法来获取 url 的具体值,也就是一个微信小程序页面中只有一个 web-view ,但是这个 web-view 的内容可以根据上一个页面传递的参数来获取页面 URL ,后面会讲如何实践,
官方提供如下接口:
1 由小程序到 web-view ,其实本质上 WEB-VIEW 也是小程序的一个页面,所以小程序到 web-view 是正常的小程序间的通信,通过 wxnavigateTo 、 wxredirectTo ,带上 url 参数, query 参数就像正常 url 的参数一样跟着后面,然后在 web-view 的页面的 Page 实例里面通过 onLoad 的方法的参数来获取 url 的值,设置给 web-view 的 src 属性为改值即可。
2 由 web-view 到小程序,由于在 web-view 的跳转通常是在 src 对应的网页中的 *** 作来处理的,所以需要结合 jssdk 来处理,不需要 wxconfig 配置,直接通过 script 标签来引入 [>
oppo手机显示当前环境不支持web view组件可能是版本库和对应版本不兼容,可以尝试升级版本。
很显然浏览器使用webview进行渲染,但是我没听过在什么手机上是跑不了的。然后是很多政府或者其他软件都是套壳浏览器,虽然有些可能确实套了个额外的浏览器,但是一般肯定有直接用webview的啊,运行很正常 。
web-view 组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面;
属性:src 是String类型,是一个网站的url,默认值是none,webview 指向网页的链接。需登录小程序管理后台配置域名白名单。
可以配合Page实例的onLoad方法来获取url的具体值,也就是一个微信小程序页面中只有一个web-view,但是这个web-view的内容可以根据上一个页面传递的参数来获取页面URL,后面会讲如何实践。
我写过的一般是get请求 因为一般这个loadUrl就是请求的完整地址 如果其实也很容易看 ,请求的时候接口端给你的接口是拼接了参数 的是get 请求 如果没有拼接参数的话 可以是get也可以是post 这个咨询下你们的写接口的那个人也可以的 ,
只能通过JavaScript来获取, 然后通过JS获取, 然后通过JavaScriptInterface来传递给Java层。
做webview,遇到2种需求,一种是在自己服务器上的HTML中获取数据,另一种是通过自己服务器上的HTML中的超链接跳到另一个站点的HTML中,并获取数据。
于是,总结了2种通过webview获取网页上的数据的方式:
第一种:简单点的,直接通过js调java,在调用方法的过程中将数据通过方法的参数传递给Android端,(前提:服务端有对应的faxun对象,而且调用的方法是showImages(String[] imgUrls))。
class MyJavaScriptInterface {
MyJavaScriptInterface() {
}
/
js调java,显示
@param imgUrls
/
@JavascriptInterface
public void showImages(String[] imgUrls) {
LogUtilsi(TAG, "imgUrls = " + imgUrls[0]);
NewsDetailWebviewActivitythisimgUrls = imgUrls;
}
}
webViewaddJavascriptInterface(new MyJavaScriptInterface(), "faxun");
第二种:有点复杂,通过webview注册一个本地接口后,然后通过java调js,拿到document对象后,解析HTML标签,然后数据会通过本地接口中的回调方法传递给Android端,(前提:HTML页面中的meta标签中有对应的reply_info名称和content属性,数据是封装在content里面的json格式的字符串)。
class MyWebClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
viewloadUrl("javascript:windowgetShareDataOnGetShareData("
+ "documentquerySelector('meta[name=\"reply_info\"]')getAttribute('content')" + ");");
superonPageFinished(view, url);
}
}
private class GetShareDataInterface {
@JavascriptInterface
public void OnGetShareData(String shareData) {
if (null != shareData) {
try {
JSONObject shareJson = new JSONObject(shareData);
title = shareJsonoptString("title");
description = shareJsonoptString("description");
imageUrl = shareJsonoptString("imageUrl");
} catch (JSONException e) {
eprintStackTrace();
}
}
}
}
webViewsetWebViewClient(new MyWebClient());
其实,如果是普通的需求,两种方式都可以解决问题,但是如果是有些HTML没有做js调java,只是个普通的HTML,并且需要获取页面上的数据时,只能通过第二种方式来获取HTML上的数据了,比如获取HTML上的title等等。
在使用webview加载URL失败的情况,检查其他地方有没有调用webview的pauseTimers 方法
此方法不仅仅针对当前的webview而是全局的全应用程序的webview,它会暂停所有webview的layout,parsing,javascripttimer。降低CPU功耗。
在需要调用webview加载的时候添加下面的方法
恢复 webviewpauseTimers() 时的动作,或者直接将 webviewpauseTimers() 取消也行,具体看项目业务需求。
以上就是关于微信小程序webview跳转小程序内路由全部的内容,包括:微信小程序webview跳转小程序内路由、Android WebView loadUrl()的参数设置问题、oppo手机显示当前环境不支持web view组件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)