个人认为WebView是 html5+ API的一个非常重要的部分。

WebView 的帮助文档http://www.html5plus.org/doc/zh_cn/webview.html

为什么对WebView的掌握很重要?因为它是一个HTML5+ APP的基础。刚刚学习HBuilder的同学一般会将重点放在 mui 组件上。mui 提供了很多默认的方法,如 openWindow(打开新页面),back(回退到上一个窗口)等等,不会意识到其实你操作的就是WebView对象。

那么在HBuilder的引擎中,WebView是一种什么样的实现呢?请参看下图:

从上面的图我们可以看到,每个页面其实就是对应一个WebView对象。每个WebView有自己的javascript运行环境,各个WebView之间不会干扰。同时,所有WebView会共享storage,session等信息。

如果你之前有Web开发经验,会知道在浏览器里从一个页面转入到新的页面的时候,旧的页面就无论如何也看不到了---除非你有一个返回的处理。

但是HBuilder就不同了。

正如上面的图所示,每次迁移到新的画面的时候,打开了一个新的WebView,但是旧的WebView其实还停留在那里,只不过新的WebView覆盖在了上面。

当然,如果你直接使用plus.Webview的方法,如create, show 是可以的。但是HBuilder给我们提供了更好的方法,就是 mui 库的 openWindow, preload 等方法

在 mui 中,默认有后退的功能,也就是返回到上一个页面。我们可以看看 back 的代码:

Js代码  
  1. $.registerBack = function(back) {
  2. return $.regesterHandler('backs', back);
  3. };
  4. /**
  5. * default
  6. */
  7. $.registerBack({
  8. name: 'browser',
  9. index: 100,
  10. handle: function() {
  11. if (window.history.length > 1) {
  12. window.history.back();
  13. return true;
  14. }
  15. return false;
  16. }
  17. });
  18. /**
  19. * 后退
  20. */
  21. $.back = function() {
  22. if (typeof $.options.back === 'function') {
  23. if ($.options.back() === false) {
  24. return;
  25. }
  26. }
  27. $.each($.backs, function(index, back) {
  28. return !back.handle();
  29. });
  30. };

我们可以看到,back 调用的其实是 window.history.back(),这应该依赖于浏览器内核的实现。因为HTML5+ API 不涉及浏览器内核的标准定义,也没有 webview 的生命周期的标准定义,所以大家一定要注意控制 webview 的生命周期,以避免重复创建出来多个 webview。

转载于:https://www.cnblogs.com/lyn940208/p/6013849.html

HBuilder完成webApp入门(3) 关于webview (转)相关推荐

  1. HBuilder完成webApp入门(2)

    一.HBuilder的下载地址:http://www.dcloud.io/,点击那个"DownLoad"就可以 了 二.假设一切顺利,启动HBuilder后,大家会看到如下的界面 ...

  2. BUI Webapp 入门教程

    BUI 是用来快速构建界面交互的UI框架, 专注webapp开发, 开发者只需关注业务的开发, 界面的布局及交互交给BUI, 开发出来的应用, 可以嵌入平台 ( 微信, 钉钉, 淘宝, 支付宝等 ), ...

  3. 安卓开发入门教程-通过WebView打开网页

    什么是WebView WebView是用来打开网页的一种UI控件,可以在App内跳转到指定网址,而不是采用系统浏览器打开网页. 基础样例 效果图 实现方案 activity class MainAct ...

  4. webapp入门到实战_web前端入门到实战:前端高手在CSS 开发效率的必备片段

    这篇文章会记录我们平时常用到的 CSS 片段,使用这些 CSS 可以帮助我们解决许多实际项目问题中遇到的,墙裂建议点赞收藏再看,方便日后查找 清除浮动 浮动给我们的代码带来的麻烦,想必不需要多说,我们 ...

  5. Hbuilder开发app实战-识岁01-actionsheet实例

    前言 之前写了HBuilder开发App入门-滴石.相信大家看完后应该能够入门了, 之后会做一些简单的app.把nativejs一些经常使用的功能都过一遍,这样以后做app就没什么难的了. 识岁 借助 ...

  6. Hbuilder的error

    Hbuilder的error ##运行=>手机=>显示Webview调试控制台,你会发现新的大陆

  7. A095_Html5入门

    目录 1.内容介绍 2.知识回顾 2.1.学习过哪些前端的内容 2.2.问题分析 2.3.小结 3.HTML5 3.1.什么是HTML5 3.2.为什么要学习HTML5 3.3.新功能 3.4.兼容性 ...

  8. 学习跨平台移动应用开发必须理解的一些概念

    跨平台移动应用开发概念 移动应用开发分类 Native app Web app Hybrid app 三者的区别 关于native.js的理解 典型跨平台移动APP开发框架 H5与H5+ H5 app ...

  9. App跨平台开发框架分析

    所谓的跨平台app开发就是一套代码写完以后可以多端发布运行到各个平台,比如:安卓.iOS.web. 原生开发是一对一的,安卓.iOS需要分别写两套代码,学习成本高.开发成本高.后期维护麻烦:跨平台AP ...

最新文章

  1. Pyhton 操作MySQL数据库
  2. Tree的实现,js开发组件dtree
  3. TensorFlow接口升级汇总
  4. airtest下载网址
  5. 计算机辅助英语训练,一种计算机辅助外语阅读训练系统及其方法
  6. JVM中GC大对象配置
  7. 年龄计算、工作表合并、高级筛选(三)
  8. 米斯特白帽培训讲义 漏洞篇 文件包含
  9. 【Elasticsearch】match_phrase搜不出来,怎么办
  10. 【干货】网易严选大数据架构.pdf(附下载链接)
  11. 推荐系统之GBDT+LR
  12. 父页面调用子页面方法, 子页面加载父页面传送的数据
  13. inter-因特尔-官网
  14. 卷积神经网络中特征图大小计算公式总结
  15. 使用 lasio 处理 .las 文件
  16. WSN关键字+自编码网络学习法
  17. java语音播报天气_语音播报实时天气
  18. 实验——子网划分与路由器配置
  19. 姿态估计之3D 人体姿态估计 - 总结(1)【转】
  20. 豆瓣读书top250爬取

热门文章

  1. arch linux arm下载_arm开发板运行hello word的详细过程
  2. markdown java 代码高亮_MarkdownPad2使用代码高亮插件
  3. python合并excel工作簿_Python合并多个Excel工作簿
  4. zdal配置文件_Autofac的基本使用---4、使用Config配置
  5. c语言所有关键字作用,void_C语言void关键字详解
  6. php第一课,[php第一课]php简介
  7. 去重 属性_面试中常问的List去重问题,你都答对了吗?
  8. centos6.5 安装多个mysql_在centos6,5(64位)系统安装多实例mysql5.6
  9. oracle查询最高一条记录,oracle 查询已有记录,上一条记录,下一条记录
  10. linux 查看主板sn_如何在 Linux 上查找硬件规格