3

MSDN のドキュメントには、Win8 WinJS アプリのonactivatedイベントを設定するための 2 つのオプションが示されています。

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

また

WinJS.Application.onactivated = listenerName;

両方のオプションは内部で同じように動作しますか? それとも、一方のアプローチを他方より優先して使用する理由がありますか?

4

2 に答える 2

2

このonactivatedスタイルは「DOM レベル 0」と呼ばれます。これは、技術的には DOM の一部ではなく、DOM が作成される前に機能するように進化した方法にすぎないためです。このaddEventListener方式は「DOM Level 2」方式と呼ばれます。onactivatedDominic が言ったように、どちらも本質的に同等ですが、私は 1 つの理由でスタイルを好みます。このような匿名関数を使用するのが好きです...

app.onactivated = function(args) {
    ...
};

ただし、DOM レベル 2 の方法を使用する場合は、無名関数を使用する習慣を身に付けることはお勧めできません。関数のハンドルを取得できず、その関数を削除することができないからです。そうすれば...

app.addEventListener("activated", function(args) {
    ...
});

次に、その関数へのハンドルがなく、削除できません。したがって、次のような名前付き関数を定義したいと思うでしょう...

app.addEventListener("activated", myActivatedFunction);
function myActivatedFunction(args) {
    ...
}

そうすれば、ハンドラーを削除する必要がある場合に実行できます...

app.removeEventListener("activated", myActivatedFunction);

私のcodeSHOW projectの Event Handlers demo に、この例があります。

楽しむ。

于 2012-11-28T01:52:33.497 に答える
2

これらは同じです。「onactivated」は、WinJS Event mixin ヘルパーによって作成された無料の onFoo イベントです。どちらも問題なく使用できます。

私は addEventListener パターンを好みます。

于 2012-11-28T01:16:20.217 に答える