WinJS.Application.addEventListener与WinJS.Application.onActivated

时间:2012-11-27 19:22:42

标签: winjs

The MSDN documentation显示了为Win8 WinJS应用设置 onactivated 事件的两个选项:

WinJS.Application.addEventListener("activated", listenerName);

WinJS.Application.onactivated = listenerName;

这两个选项的行为是否相同,或者是否有理由使用一种方法而不是另一种?

2 个答案:

答案 0 :(得分:2)

这些都是一样的。 “onactivated”是由WinJS Event mixin助手创建的免费onFoo事件。你可以使用其中任何一个而不受惩罚。

我自己更喜欢addEventListener模式。

答案 1 :(得分:2)

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 project的事件处理程序演示中有一个示例。

玩得开心。