Keycode对照表
字母和数字键的键码值(keyCode) 按键 键码 按键 键码 按键 键码 按键 键码 A 65 J 74 S 83 1 49 B 66 K 75 T 84 2 50 C 67 L 76 U 85 3 51 D 68 [...]
字母和数字键的键码值(keyCode) 按键 键码 按键 键码 按键 键码 按键 键码 A 65 J 74 S 83 1 49 B 66 K 75 T 84 2 50 C 67 L 76 U 85 3 51 D 68 [...]
$("#bl .xui-borderlayout-area.xui-borderlayout-top").remove();
这篇文档主要以WeX5平台自带的外卖应用打发布包为例,介绍WeX5生成iOS ipa包和Android apk包的详细过程,BeX5与WeX5打包过程一样,可直接参考。 打包前的准备工作 1)请参看博客初步了解《WeX5平台App打包目录结构》。 2)下载解压WeX5平台版本。 3)如果是打iOS ipa包,需搭建好X5应用本地打包服务器;详细方法参见博客《WeX5本地应用打包服务器环境搭建》。 4)如果是打iOS ipa包,还需生成外卖应用的iOS打包证书,需要用到的证书包括:P12的证书文件以及后缀为.mobileprovision的App描述文件;详细方法参见博客《iOS证书申请和使用说明》。 另外,目前xcode7已支持使用免费苹果ID帐号生成开发证书,这样在开发阶段就不用申请收费的苹果帐号也可以生成APP ipa包测试了。xcode7+iphone使用免费苹果ID帐号生成开发证书打包测试的方法参看文章《xcode7+iphone免费帐号打包详解》。 如果是只打Android apk包,则跳过3和4步即可。以上准备工作完成,可以开始进行打包。 APP打包过程详解 1)打开WeX5版本,双击“启动WeX5开发工具.bat”打开studio开发工具。 2)在模型资源下找到Native目录,右键菜单新建–创建本地APP。 3)对于已有的APP,可以右键点击“编辑本地APP”菜单,对打包配置进行编辑,或者查看打包所配置相关信息和所选组件等。 4)下面以新建外卖APP为例介绍打包时的各种配置。鼠标右键点击Native,新建–>创建本地APP。 5)第一步,选择应用模式。根据所创建APP的需要,选择对应模式。输入应用名,然后下一步。 6)打开“设置服务地址和选择UI资源”界面,必须输入Web服务地址、Web路径和首页地址,根据应用情况选择需要打包的资源。 然后“下一步”。这里的“Web服务地址”主要作用是指定加载UI资源的访问地址,以及通过baas去完成数据库交互工作的服务。 外卖APP的打包资源选择后的情况如下图: 7)进入“配置应用信息”界面,输入版本号、应用包名和应用描述。 版本号每次打正式发布包时需写新的序号,一个正式APP包对应一个版本号,以便用户在移动终端上安装时能检查到已安装应用进行更新。 应用包名输入苹果APP证书生成时对应的Bundle ID。 配置本地应用选项说明 增强型浏览器:是否选择增强型浏览器主要影响了生成APP包的大小。选择增强型浏览器,会使APP包在4以下版本的设备上使用时有更优的浏览性能,但APP包也会更大。 打包的资源进行加密:选择后打包的资源会进行加密。 以上选项,请根据自己APP的实际情况选择即可。选择好本地应用的配置后,点击“下一步”。外卖APP的本地应用配置情况如下图: 8)进入“配置开发展信息和证书”界面,需入开发者相关信息选择对应证书。 打Android的APP包必须√选上Android证书项,输入Android证书密码(平台默认带的Android证书密码为123456),如选择新生成证书文件android.keystore,会根据上面所输入的开发者相关信息和证书密码,重新生成Android证书。 打iOS的APP包需要根据使用的是iOS的开发证书还是发布证书进行选择。输入iOS证书密码(是P12文件的密码),然后选择对应的P12文件和APP验证文件,是开发证书则选择ios.developer.mobileprovision和ios.developer.p12,是发布证书则选择ios.distribution.mobileprovision和ios.distribution.p12。(证书文件名称没有要求,平台会自动将文件名称修改为标准的并拷贝至生成APP的文件夹下) 【苹果证书说明】 [...]
模式1:UI资源启动后智能更新 WeX5开发的UI资源放入Web服务器上,可以很方便的与已有的Web服务集合,不管是PHP、ASP .Net,还是NodeJS等。此种模式编译好的UI资源需要部署到Web服务器上,资源在应用的www目录下。 本模式支持UI资源的更新,App启动时,会向web服务端发送请求,如果发现资源有变更,当前UI资源会记录更新版本的信息,但不会立即执行更新操作(该请求是异步请求,用户看不到),并且用户可以继续使用当前UI资源的版本。当用户下次启动本UI资源时,才会执行更新操作。推荐使用本模式。 注意:本模式下Web服务器上有多个UI资源的版本,后台代码和编译的资源需要兼容(这种模式下应该保留多份后台代码,历史上的也应该保留),保证各个版本都能正常运行。所以本模式支持多版本同时运行和灰度发布。 模式2:UI资源启动时立即更新 WeX5开发的UI资源放入Web服务器上,可以很方便的与已有的Web服务集合,不管是PHP、ASP .Net,还是NodeJS等。此种模式编译好的UI资源需要部署到Web服务器上,资源在应用的www目录下。 本模式支持UI资源的更新,App启动时,会向web服务端发送请求,如果发现资源有变更,会立即执行更新操作。如果资源变更了,编译UI资源后,把www的资源更新到Web服务即可。 注意:本模式需要保证UI资源启动时,能够请求到web服务器。 模式3:UI资源通过UIServer访问 本模式使用UIServer服务器,是BeX5模式的推荐使用,另外在WeX5调试App时也推荐使用此模式。本模式下,生成好App后,如果tomcat启动即可正常使用。 本模式支持UI资源的更新,如果资源变更了,对于生成模式(独立启动的Tomcat),修改资源版本号即可,而对于调试模式(studio里面启动tomcat),每次访问版本都不同,不需要做特别处理。具体原理参考:UIServer缓存机制 本模式和模式2一样,在生成App时可选“本地应用包含UI资源”,这样可以在第一次打开时不用去下载UI资源。注意:对于调试模式,此选项除了增大App体积外,无实际作用,因为资源版本号每次都变化,每次访问都会新下载。 模式4:打开一个非WeX5开发的网站 本模式适合包装现有的一个网站,做成一个本地App。由于没有使用WeX5提供的UI资源,本模式不支持UI资源更新,同样也不支持App版本更新(可参考WeX5机制自行扩展) 本模式如果想使用本地插件,那需要在选择插件的页面显示的选择插件,并在自己的主页中引用 /corodva.js,cordova.js在生成App时已经包含进去,通过 /corodva.js 的方式就能引用到。 本文由WeX5君整理,WeX5一款开源免费的html5开发工具,H5 App开发就用WeX5! 阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443
2015-10-28最新发布的X5本地应用打包服务器_V3.2.1,采用Mac OS X 10.11操作系统,在密码强度上的要求更严格了。 目前在使用过程中发现,苹果开发帐号的P12导出输入密码时会出现以下问题: 1、输入的密码与验证密码一样,但仍提示“您的密码与验证的密码不同”。多次输入后有时能正常通过导出P12。 2、导出P12后,输入的密码是P12导出时输出设置的密码,但是在打包日志过程中仍然报密码错误的信息。 security:SecKeychainItemImport:MAC verification failed during PKCS12 import(wrongpassword?) 【解决方法】 遇到以上问题,解决方法如下: 第一步:将P12文件在本机上双击运行,进行导入验证。系统会提示让输入P12证书的密码。密码输入后如提示不正确,则说明该P12证书文件的密码的确有问题。如能正常导入,则说明密码正确,可以正常打包。(下面是windows证书导入的界面,在MAC上导入时也会出现类似的输入密码窗口) 第二步:如果证书导入时确认输入的密码是P12导出时输出设置的密码,仍然提示密码不正确。则需要在导出P12时使用MAC系统的“密码助理”提供的具有较高强度的密码即可解决密码不正确的问题。如下图: 本文由WeX5君整理,WeX5一款开源免费的html5开发工具,H5 App开发就用WeX5! 阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443
WeX5的混合模式底层基于cordova/phonegap,所以开发本地插件只需要按照相应规范就可以,由于BeX5基于WeX5,所以本文档也适用于BeX5。 一、如何使用本地插件(Cordova plugin) 在需要使用插件的页面对应的js中,如下代码引用: require("$UI/system/lib/cordova/cordova"); //cordova运行环境,多个页面用cordova插件,每个页面都需要require进来 require("cordova!phonegap-plugin-barcodescanner"); //使用的cordova插件 再参考插件的文档,书写对应的js。例如二维码插件barcodesacnner,代码如下: //扫描二维码,返回二维码信息 cordova.plugins.barcodeScanner.scan( function (result) { alert("We got a barcoden" + "Result: " + result.text + "n" + "Format: " + result.format + "n" [...]
WeX5是跨端移动开发框架,BeX5是基于WeX5的企业快速开发平台,它们都采用前后端分离的开发模式,和Web传统的前端页面开发(例如extjs)比较类似,和jsp存在差异。WeX5、BeX5和Web传统的前端页面开发最大的差异在于,WeX5、BeX5采用了单页模式,实现资源不重复加载: 由于采用单页模式,X5引入了RequireJS,实现资源异步按需加载,且只加载一次 作为快速开发工具,X5提供了可视化界面设计器 作为快速开发工具,对界面常用功能进行封装,实现界面全面组件化 这样的UI开发与传统UI开发有哪些不同呢?下面就从页面部分、页面中的数据、js部分、发布等几个方面具体说明。 1、页面部分 1.1、页面加载事件 1.2、页面关闭事件 1.3、获取url的参数 1.4、引用js 1.5、引用css 1.6、使用xid而非id 1.7、获取到input输入框的输入内容 1.8、页面跳转 1.9、图片路径 <img src=?> 1.10、信息提示 1.11、上传文件 1.12、详细页面的制作 1.13、界面控制 1.14、路由 1.15、背景图片 1.16、事件 1.17、调用action 1.18、在前端获得session的值 1.19、在前端访问全局变量 2、页面中的数据 3、js部分 3.1、全局变量 3.2、自定义js方法 3.3、自定义公共js文件 3.4、获取element 3.5、获取jQuery对象 3.6、创建节点,删除节点 [...]
uniqueName绑定用来为元素生成一个唯一的name属性,uniqueName绑定不常用到。 应用场景: 第三方js库需要元素有name属性的时候,我们可以使用uniqueName绑定为元素生成一个唯一的name属性。例如在jQuery validation中,就需要元素必须有一个name属性。 IE6下,radio button元素必须具有name属性,否则不能选中。对于radio button而言,name属性用来对一组radio button进行分组,因此貌似是必须的。但如果你的业务逻辑中真的不需要,那么我们也可以使用uniqueName绑定随机的生成一个唯一的name属性。 示例代码: <input bind-value="someModelProperty" bind-uniqueName= "true" /> 当参数值为true的时候,表示需要生成唯一name属性。 本文由WeX5君整理,WeX5一款开源免费的html5开发工具,H5 App开发就用WeX5! 阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443
options绑定用来绑定select控件的option项,它只能用在select元素中,并且绑定值必须为数组。对于单选的下拉列表,选中值用value绑定;对于多选的列表,选中值用selectedOptions绑定。 示例代码 单选列表 //.W片段 <p> Destination country: <select bind-options="availableCountries"></select> </p> //.js片段 availableCountries=justep.Bind.observableArray(['France', 'Germany', 'Spain']) 多选列表 //.W片段 <p> Choose some countries you would like to visit: <select bind-options="availableCountries" size="5" multiple="true"></select> </p> //.js片段 availableCountries=justep.Bind.observableArray(['France', [...]
template用来定义模板,并将模版用在指定的DOM绑定中。template的用处显而易见,可以更加清晰的定义代码,并能够方便的复用这些代码。 示例代码: //.W片段 <h2>Participants</h2> Here are the participants: <div bind-template="{ name: 'person-template', data: buyer }"></div> <div bind-template="{ name: 'person-template', data: seller }"></div> <script type="text/html" id="person-template"> <h3 bind-text="name"></h3> <p>Credits: <span bind-text="credits"></span></p> </script> //.js片段 this.buyer = [...]