The MSDN documentation显示了为Win8 WinJS应用设置 onactivated 事件的两个选项:
WinJS.Application.addEventListener("activated", listenerName);
或
WinJS.Application.onactivated = listenerName;
这两个选项的行为是否相同,或者是否有理由使用一种方法而不是另一种?
答案 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的事件处理程序演示中有一个示例。
玩得开心。