Deviceone平台并不是基于html5的跨平台开发工具。我们开发一个app都是使用原生的组件,但是在某些场景下html5也是非常好的选择,比如复杂的图文混排(类似新闻),比如报表chart之类用html很方便。如果你对html相关技术熟悉的话,你也可以在更多场景使用。

我们从二个方面来介绍:

加载网页

这是基本功能,加载网页很简单就是通过设置url属性为本地html(data://,source://协议)和web网页(http://,https://协议)。
do_Webview加载网页你可以理解为就像一个内嵌的浏览器打开网页一样,常用的js,css等所有和web相关的技术都支持,通常手机都带了缺省的浏览器,这个浏览器的核心和do_Webview是一致的。
当然还是有可能有细微差别,浏览器相对来说成熟更多,容错和兼容性更强。

var webview = ui("do_webview_id1");
webview.url = "source://view/test.htm";
webview.url = "http://www.baidu.com"

  

html相关的技术太多,我们这里不再做介绍,不属于deviceone平台的范畴。

调用deviceone其它组件

这个是重点,do_Webview组件是deviceone提供了众多组件中一个,这个组件是一个ui文件里的一部分,可以实现它和其它组件的交互。在html里面的js代码能调用其它MM,SM和UI组件。
和在ui.js里调用deviceone的API类似,唯一区别是所有与deviceone相关的操作都必须放在onDeviceOneLoaded回调函数里,这个回调函数有点类似JQuery的ready方法。
SM和MM的使用方法完全一样,但是对UI的操作建议是通过触发page的消息来处理。比如test.html加载在test.ui里的webview组件里,如果test.html需要控制test.ui里的其它ui,最好的方式是在test.html里的js代码发送一个page作用域的消息给test.ui.js,在test.ui.js里去操作其它ui组件。
可以参考以下示例,这个示例完整展示了调用SM,MM,UI的方法:

//login.html
<Script>
var login = document.getElementById("login");
var back = document.getElementById("back");
//所有和deviceone相关的调用都需要放在onDeviceOneLoaded回调函数里,类似JQuery的ready方法
window.onDeviceOneLoaded = function() {
// sm对象的获取和在ui.js里获取没有差别
var nf = sm("do_Notification");
var app = sm("do_App");
var page = sm("do_Page");
login.onclick = function() {
var name = document.getElementById("loginName").value;
var pwd = document.getElementById("loginPwd").value;
if (!name || !pwd) {
//调用原生的alert方法
nf.alert("用户名或密码不能为空!")
} else
loginNewPage(http, page);
}
back.onclick = function() {
//点击html的按钮返回到前一个page
app.closePage();
}
// mm对象的创建和在ui.js里没有区别
var http = mm("do_Http");
http.method = "POST";
http.on("result", function(data) {
//对ui的操作最好是通过消息发送到ui.js里去做,而不是直接在html里操作
page.fire("progressbar", "hide");
if (data.status == 200) {
app.openPage({
source : "source://view/main.ui",
statusBarState : "transparent"
});
}
});
}
function loginNewPage(http, page) {
http.url = "http://www.baidu.com";
http.request();
//对ui的操作最好是通过消息发送到ui.js里去做,而不是直接在html里操作
page.fire("progressbar", "show");
}
</Script>

  

上面的示例可以看到通过加装本地html可以直接访问deviceone的任何API,包括html不支持的本地读写等操作。

另外加载web页面,也就是http:// 的页面其实也可以访问deviceone的任何API,这会带来一个安全问题,所以do_Webview组件增加一个属性来控制,如果这个属性为false,则无法调用deviceone的其它组件了

webview.allowDeviceOne  = false;

  

Webview组件和HTML的介绍的更多相关文章

  1. 小程序web-view组件

    不久前微信小程序发布了web-view组件,这个消息在各个圈里引起不小的涟漪.近期正好在做小程序的项目,便研究了一下这个让大家充满期待的组件.   1,web-view这个组件是什么鬼? 官网的介绍: ...

  2. [转]小程序web-view组件

    本文转自:https://www.cnblogs.com/-nothing-/p/7910355.html 1,web-view这个组件是什么鬼? 官网的介绍:web-view 组件是一个可以用来承载 ...

  3. ReactNative WebView组件详解

    在开发Android的时候,一般我们会有一些加载网页的需求,或者执行一些JavaScript,我们都知道在Android中实现这个功能的控件是WebView,在ReactNative中也有实现此类需求 ...

  4. Android 4.2版本以下使用WebView组件addJavascriptInterface方法存在JS漏洞

    JS注入漏洞存在的Android版本:Android < 4.2 综述:Android的SDK中提供了一个WebView组件,用于在应用中嵌入一个浏览器来进行网页浏览.WebView组件中的ad ...

  5. Hadoop基础-Hdfs各个组件的运行原理介绍

    Hadoop基础-Hdfs各个组件的运行原理介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode工作原理(默认端口号:50070) 1>.什么是NameN ...

  6. 安卓开发笔记——WebView组件

    我们专业方向本是JAVA Web,这学期突然来了个手机App开发的课设,对于安卓这块,之前自学过一段时间,有些东西太久没用已经淡忘了 准备随笔记录些复习笔记,也当做温故知新吧~ 1.什么是WebVie ...

  7. 微信小程序中的 web-view 组件

    web-view 是一个可以承载 web 网页的容器,当 WXML 文件中存在 web-view 组件时,其他组件会自动全部失效,而且 web-view 承载的组件会自动铺满小程序的整个页面.其他组件 ...

  8. ReactNative: 使用网页组件WebView组件

    一.简介 在移动端开发中,很多时候需要嵌入一个网页来帮助实现某一个活动,这方式大大提高了活动快速迭代的灵活性,在RN中,同样也这么处理这种情况的.其实,这种混合式开发称为Hybird APP,它们就是 ...

  9. 【Flutter学习】基本组件之Webview组件

    1.添加依赖 dependencies: flutter_webview_plugin: ^+ 2.导入库 import 'import 'package:flutter_webview_plugin ...

随机推荐

  1. ElasticSearchwindow下搭建

    ElasticSearch是一个开源的分布式搜索引擎. 下载 下载地址: https://www.elastic.co/downloads/elasticsearch 当前版本:Elasticsear ...

  2. Linq to Sql : 并发冲突及处理策略

    原文:Linq to Sql : 并发冲突及处理策略 1. 通过覆盖数据库值解决并发冲突 try { db.SubmitChanges(ConflictMode.ContinueOnConflict) ...

  3. Java语言程序设计(基础篇) 第三章 选择

    第三章 选择 3.8 计算身体质量指数 package com.chapter3; import java.util.Scanner; public class ComputeAndInterpret ...

  4. SpringMVC原理解析-Servlet容器启动时初始化SpringMVC应用的原理

  5. IIS/IIS Express/Asp.net配置片段记录

    事情的起因是,我们在项目中使用了URLRewriter.dll作为实现伪静态的工具,在VS2010及之前的开发环境中,该功能运行正常,但在VS Express 2012 for Web中就不起作用了, ...

  6. Ubuntu Kylin 14.04下配置JDK1.8

    1.源码包准备: 首先到官网下载jdk,http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.h ...

  7. mongodb群集

    项目目标:故障自动切换和自动修复成员节点,各个数据库之间数据完全一致.项目描述:副本集没有固定主节点,是整个集群选举得出的一个主节点,当其不工作时变    更其他节点.最小的副本集也应该具备一个pri ...

  8. UVALive 7146 Defeat the Enemy(贪心+STL)(2014 Asia Shanghai Regional Contest)

    Long long ago there is a strong tribe living on the earth. They always have wars and eonquer others. ...

  9. GetKeyboardType获取键盘类型(通过键盘可初步判断用户使用的是台式电脑还是笔记本电脑)

    函数功能:该函数获取系统当前键盘的信息. int WINAPI GetKeyboardType( __in int nTypeFlag ); 参数说明:nTypeFlag:指定要获取的键盘信息的类型, ...

  10. PHP设计模式之:单例模式

        前 些日子开始着真正的去了解下设计模式,开始么,简单地从单例模式开始,当然网上看了一些资料,单例模式比较好理解,看看介绍,然后看看代码基本也就能够理 解了,设计模式这些的花点心思基本的是能够理 ...