屏蔽或自定义报错样式

原因: 有些用户反映,APP运行出错,比如网络异常等报错的提示信息不够友好!让用户不知所措!所以这里提供一中方法,可以修改成自己想要的错误提示框 解决方案: 修改/UI2/system/lib/base/error.js中的window.onerror 方法即可,改成你自己的,改完后需要重新合并js文件 \tools\dist\dist.bat 其中,ErrorDialog 就是定义的弹出页,你可以在这里修改引入cordova 然后弹出原生界面!

js中 MD5加密的写法

原因:在客户端请求服务器时,有些数据比较保密,比如密码,为了防止网络传输过程中,信息被人盗取!建议关键的信息进行md5加密!平台提供的很多基础类都是直接引入就可以调用的!而MD5 还需要动态new 解决方案: 1.引用var MD5 = require('$UI/system/lib/base/md5'); 2.md5 = new MD5(); 3.md5.hex_md5("XXXXX"); 为了安全起见,可以进行二次加密或多次加密!往往用户登录的时候就需要密码加密!数据库中存储的也是加密后的字符串!这样就保证了密码绝对的安全!

自定义页面切换动画

原因:页面切换,无论是shell跳转还是contents组件的切换,底层都是使用的contents组件实现的!所以如果想自定义页面切换的其他转场样式,就需要做如下修改 解决方案: /UI2/system/components/justep/contents/contents.js 中代码:addClass('slidable') 表示添加动画样式,可以修改成自己定义的class样式(当然也可以直接使用这个名称) css样式在文件:/UI2/system/components/justep/contents/css/contents.less 中,修改成你自己的动画效果后,就是参考slidable的定义来写你自己的动画 执行tools\dist\less.bat 生成新的css文件! 执行\tools\dist\dist.bat合并js(js没修改可以不用执行)

windowContainer组件父页面中调用子页面的方法

原因:为了页面优化!windowContainer组件往往设置autoLoad为false,需要显示的时候才去加载,有时候里面页面还没加载呢,父页面就想提前调用了子页面的方法!会导致出错,undefind 错误 解决方案: js方法中先做判断,if(this.comp('windowContainerXid').getInnerModel()) 条件如果为false,说明子页面还没有加载!就执行this.comp('windowContainerXid').load() 加载子页面

iframe中嵌套html页面中的js调用外层w页面的js方法

原因: 有时候需要使用iframe 标签嵌套一个原始的html来显示页面,比如百度地图!(常常是第三方的框架!在原始的html中实现比较简单)这个时候,如果想外层w页面和里层iframe做数据交互,相互调用js方法!就需要如下实现 解决方案: 一、w页面中如果想访问iframe中的js方法!就需要获取到iframe中的window对象!这个可以上网查,一般获取到iframe节点的dom对象后,通过mapFrame.contentWindow.就可以得到了 var ifr = this.getElementByXid("iframeXid").contentWindow;//取得子页面的窗口 var img = ifr.document.getElementById("bkbjImg");//取得子页面中要操作的dom元素 img.src = "img/bkbjRed.gif";//更新元素的src属性值 二、iframe中的js访问外层w的js方法以map为例,如下: 1、在调用map.html的父窗口mapActivity.w中,随便加一个div,方便调用。源码如下: 2、在调用map.html的父窗口mapActivity.js中,随便加一个函数,为了测试。源码如下: Model.prototype.test = function(data){ alert(data.a); }; 3、在map.html文件中,在想调用父窗口的地方加入如下代码: var partenW = window.parent; var parentDiv = partenW.document.getElementById('ContextForId'); [...]

视频播放使用video标签

原因: wex5中视频播放建议直接使用HTML5 的video标签,这样兼容性最好!但是它也有局限性,只支持特殊格式的视频! 解决方案: video标签支持这三种视频格式: .mp4 = H.264 + AAC .ogg = Theora + Vorbis .webm = VP8 + Vorbis 具体可以上网查一下!所以建议服务器上传的视频做一下格式转换才行

报错:GET http://localhost:35729/livereload.js?_

现象: GET http://localhost:35729/livereload.js?_=1438955165665 net::ERR_CONNECTION_REFUSED 原因: livereload 这个是3.2 的新特性,会自动刷新页面,也就是你如果用网页打开或者手机打开,如果保存了页面,页面会自动加载。 这个在studio下启动tomcat有效。 出错可能是监控服务异常了 解决方案: 可以关闭studio新进入一次,这个不影响正常使用!正式部署后也不存在这个问题了!

加载xxx/xxx/xxx.w出错

现象: 加载/x5/UI2/v_4935_nol_zh_CNs_desktopd_pc/system/deploy/package/xxx.w?$pageType=model出错 编码:JUSTEP230103 原因: 1.手动修改.w源码,把代码格式改乱了! 2.修改.w源码,把组件的结构改坏了!导致组件不能正常解析 3.js代码中有语法问题! 解决方案: 1.这个你格式化一下看看,如果能格式化就说明正常.可有右键,源代码---》格式; 或者快捷键 Ctrl+Shift+F 2.尽量不要破坏平台封装的组件的dom结构,比如这个表情中代带有component 属性,就说明他是一个WeX5组件 3.注释一部分代码看看是否正常??然后再依次取消注释,看看是哪儿引起的错误!使用排除法

滚动到页面顶部(或指定位置)

原因:在APP 中,有滚动条的时候,为了操作方便,想在下面点一个按钮直接回到顶部!或者是直接滚动的中间某个位置! 解决方案: 1.在没有scrollView组件的情况下,顶部(或者页面指定位置)添加一个空的div ,设置 id为(比如 top) 可以使用一个a标签href设置为#top,这样就回到那个位置了!这个是html标准的实现方式 或者js代码实现,根据xid获取id ,然后滚动到指定位置: var id = this.getIDByXID("div的xid"); window.location.hash = "#"+id; 2.使用了scrollView 作为滚动组件,回到顶部的方法是,this.comp('scrollView的xid').scroller.scrollTo(0,0); 回到指定高度的方法是第一个参数中给一个整数,比如this.comp('scrollView的xid').scroller.scrollTo(100,0) 滚动到list某一行的指定位置: Model.prototype.listGoTo = function(rowIndex) { // 根据索引获得HTML ID,使用ID定位 var e [...]