windows8中的事件处理
这是javascript创建的空白应用程序中的默认js文件(default.js)内容:
(function () { "use strict"; WinJS.Binding.optimizeBindingReferences = true; var app = WinJS.Application; var activation = Windows.ApplicationModel.Activation; app.onactivated = function (args) { if (args.detail.kind === activation.ActivationKind.launch) { if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) { // TODO: 此应用程序刚刚启动。在此处初始化 //您的应用程序。 } else { // TODO: 此应用程序已从挂起状态重新激活。 // 在此处恢复应用程序状态。 } args.setPromise(WinJS.UI.processAll()); } }; app.oncheckpoint = function (args) { // TODO: 即将挂起此应用程序。在此处保存 //需要在挂起中保留的任何状态。您可以使用 // WinJS.Application.sessionState 对象,该对象将在 //挂起中自动保存和恢复。如果您需要在 //挂起应用程序之前完成异步操作,请调用 // args.setPromise()。 }; app.start(); })();
这段代码中的"use strict"代表的是开启严格模式,严格模式为代码提供了额外的错误检查。
有两个事件,代表的是应用的生命周期,每个应用都有它的应用生命周期:
onactivated事件表示的正在运行或者激活,这个事件里面是用来注册我们的事件处理程序,就是把初始化的内容和添加事件都写在这里面。
oncheckpoint事件表示的已挂起,这个事件里面就是处理即将挂起应用时会调用的程序。
处理函数写在default.js 中的 app.oncheckpoint 事件处理程序之后、对 app.start 的调用之前。
下面通过一个小例子来学习如何进行事件处理:
我想要实现的效果很简单,就是在文本输入框中输入我的姓名,当我点击按钮的时候,把我的名字显示出来。
首先是html部分的内容:
在default.html页面的body部分加:
<body> 请输入您的姓名:<input type="text" id="userName" /><input type="button" value="按钮" id="btn" /> <div id="con">这里显示您的姓名</div> </body>
现在就是给应用添加事件了,按照应用生命周期的原则:我们把事件绑定写在onactivated里面,这里再说一下,
args.setPromise(WinJS.UI.processAll());
这行代码的意思是初始化应用中的所有控件,我们现在没用到控件,不删留着它就行,添加事件后的代码:
app.onactivated = function (args) { if (args.detail.kind === activation.ActivationKind.launch) { if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) { // TODO: 此应用程序刚刚启动。在此处初始化 //您的应用程序。 } else { // TODO: 此应用程序已从挂起状态重新激活。 // 在此处恢复应用程序状态。 } args.setPromise(WinJS.UI.processAll()); var btn = document.getElementById("btn");//获取按钮 btn.addEventListener("click", btnHendler, false);//为按钮添加处理函数 } };
在onactivated事件里面为按钮注册事件后,就是写处理函数了,按照应用生命周期原则,应该把处理函数写在app.oncheckpoint 事件处理程序之后、对 app.start 的调用之前:
function btnHendler() {//事件处理函数 var userName = document.getElementById("userName").value;//获取文本框里的文本 document.getElementById("con").innerText = userName;//把文本框里的内容添加到con(名字显示区域)里面 }
最后贴出修改后的完整default.js文件:
(function () { "use strict"; WinJS.Binding.optimizeBindingReferences = true; var app = WinJS.Application; var activation = Windows.ApplicationModel.Activation; app.onactivated = function (args) { if (args.detail.kind === activation.ActivationKind.launch) { if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) { // TODO: 此应用程序刚刚启动。在此处初始化 //您的应用程序。 } else { // TODO: 此应用程序已从挂起状态重新激活。 // 在此处恢复应用程序状态。 } args.setPromise(WinJS.UI.processAll()); var btn = document.getElementById("btn");//获取按钮 btn.addEventListener("click", btnHendler, false);//为按钮添加处理函数 } }; app.oncheckpoint = function (args) { // TODO: 即将挂起此应用程序。在此处保存 //需要在挂起中保留的任何状态。您可以使用 // WinJS.Application.sessionState 对象,该对象将在 //挂起中自动保存和恢复。如果您需要在 //挂起应用程序之前完成异步操作,请调用 // args.setPromise()。 }; function btnHendler() {//事件处理函数 var userName = document.getElementById("userName").value;//获取文本框里的文本 document.getElementById("con").innerText = userName;//把文本框里的内容添加到con(名字显示区域)里面 } app.start(); })();
到这里对事件处理的介绍就结束了,在用javascript开发windows8 metro应用中,代码解析因为用的是ie10的内核,所以ie10的事件在应用开发也是一样可以使用的,在ie10中新增加了很多的事件和手势,大家如果有兴趣可以查阅我的另一篇关于ie10事件的文章。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构