MSDN 文档显示了为 Win8 WinJS 应用程序设置onactivated事件的两个选项:
WinJS.Application.addEventListener("activated", listenerName);
或者
WinJS.Application.onactivated = listenerName;
这两个选项在幕后的行为是否相同,或者有理由使用一种方法而不是另一种方法?
这些都是一样的。"onactivated" 是由 WinJS 事件混合助手创建的免费 onFoo 事件。您可以随意使用其中任何一种。
我自己更喜欢 addEventListener 模式。
这种onactivated
风格被称为“DOM Level 0”,因为它在技术上不是 DOM 的一部分,而只是在 DOM 制定之前它演变为工作的方式。该addEventListener
方法称为“DOM Level 2”方法。正如多米尼克所说,两者本质上是等价的,但onactivated
出于一个原因,我碰巧更喜欢这种风格。我喜欢使用这样的匿名函数......
app.onactivated = function(args) {
...
};
但是,如果您使用 DOM Level 2 方法,那么养成使用匿名函数的习惯是个坏主意,因为您没有函数的句柄,因此永远无法删除它。所以如果你这样做...
app.addEventListener("activated", function(args) {
...
});
那么您没有该函数的句柄,也无法将其删除。因此,您需要定义一个这样的命名函数......
app.addEventListener("activated", myActivatedFunction);
function myActivatedFunction(args) {
...
}
这样,如果您需要删除处理程序,您可以这样做......
app.removeEventListener("activated", myActivatedFunction);
我的codeSHOW 项目的事件处理程序演示中有一个这样的示例。
玩得开心。