当前位置: 首页 > news >正文

Webview组件和HTML的介绍

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;

  

转载于:https://www.cnblogs.com/andbut/p/5406752.html

相关文章:

  • [一句秒懂]高仿QQ底部小红点弹簧效果
  • 安全关闭多Activity的Application
  • Android自定义控件之日历控件
  • path去除多余“/”和添加“/”正则
  • JS魔法堂:doctype我们应该了解的基础知识
  • CSS3魔法堂:禁止用户改变textarea大小
  • 音效
  • 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法...
  • ssl证书的对称密钥与非对称密钥
  • Linux LVM硬盘管理及LVM扩容
  • synchronized 补遗
  • 软考信息系统监理师,2016年4月22日作业
  • 使用VMware虚拟机,分别部署2台centos7主机实现,httpd(php模块)+mysql,
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • 获取当前时间的 年月日时分秒
  • 【个人向】《HTTP图解》阅后小结
  • 2017 前端面试准备 - 收藏集 - 掘金
  • co.js - 让异步代码同步化
  • Create React App 使用
  • express + mock 让前后台并行开发
  • extract-text-webpack-plugin用法
  • Hexo+码云+git快速搭建免费的静态Blog
  • Java超时控制的实现
  • LeetCode29.两数相除 JavaScript
  • npx命令介绍
  • PHP的类修饰符与访问修饰符
  • SpiderData 2019年2月23日 DApp数据排行榜
  • ViewService——一种保证客户端与服务端同步的方法
  • Vue.js源码(2):初探List Rendering
  • Vue实战(四)登录/注册页的实现
  • XForms - 更强大的Form
  • 包装类对象
  • 构造函数(constructor)与原型链(prototype)关系
  • 基于HAProxy的高性能缓存服务器nuster
  • 基于遗传算法的优化问题求解
  • 离散点最小(凸)包围边界查找
  • 设计模式走一遍---观察者模式
  • 微信小程序:实现悬浮返回和分享按钮
  • 线性表及其算法(java实现)
  • 携程小程序初体验
  • UI设计初学者应该如何入门?
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​Linux·i2c驱动架构​
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • $forceUpdate()函数
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (十六)Flask之蓝图
  • (顺序)容器的好伴侣 --- 容器适配器
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET Core中的去虚
  • .net php 通信,flash与asp/php/asp.net通信的方法