其實在產生 window8 app 範本時,都會自動幫你帶一個 default.js,
通常我不太會去動它,因為如果有需要的話會另外開 js 在載入頁面。
到底這個default.js是幹什麼的呢,打開之後實在有點煩,還真的不知道他在做些什麼。
我簡單提一下我所知道的:
default.js 裡面有個 app.onactivated 的事件,主要是用來處理整個 app 的 activate,很白話,不過好像真的就是這樣。
(function () {
"use strict";
WinJS.Binding.optimizeBindingReferences = true;
var app = WinJS.Application;
var activation = Windows.ApplicationModel.Activation;
app.onactivated = function (args) {
//中間省略
args.setPromise(WinJS.UI.processAll());
}
};
//中間省略
app.start();
})();
其實比較特別是 WinJS.UI.processAll( ) ,這個函數會去看 defaut.html有沒有使用 WinJS.UI 的元件,比方說你用了 GridView 或是 Rating 之類的,如果有的話就會啓用這些元件。
另外,如果你要替非 WinJS.UI 的元件做些事件監聽的事情,(比方說你自己有做一個button,那個button並沒有使用data-win-control這個屬性去指定他為 WinJS.UI 的元件),這一類的事件監聽,建議你寫在 WinJS.UI.processAll( ) 之後。
雖然假如一開始你是完全沒有使用到 WinJS.UI 的東西,但也不建議你把這些 app.onactivated 給刪掉,因為你很有可能有機會用到。
另外default.js裡面的code是用匿名函數給包住,並且是在strict嚴格模式之下(雖然我很少用 use strict),使用匿名函數是個不錯的習慣,避免全域變數受到污染。