我对该WinJS.Application.start()
函数的理解是,它允许 WinJS 将某些正常的页面初始化事件排队,让您有机会首先在default.js
文件中设置其他数据。通过调用start()
末尾的函数default.js
,WinJS 会为您触发所有排队的事件(例如activated
事件)。
我试图了解一切都适合生命周期的位置,所以我不清楚为什么以下示例中的第一个有效,而第二个无效。我所做的只是更新页面标题,当我app.start()
在延迟 5 秒后调用时,它无法按预期工作:
首先,这里是default.html
:
<html>
<head>
<script references...>
</head>
<body>
<h1 id="pageTitle">Page of coolness...</h1>
</body>
</html>
这是第一个default.js
示例(按预期工作):
(function () {
var app = WinJS.Application;
app.onactivated = function () {
document.getElementById("pageTitle").innerText = "Rock it!";
};
// This code *does* fire the onactivated event:
// The page displays "Rock it!" in the page title
app.start();
})();
这是第二个default.js
示例(未按预期工作):
(function () {
var app = WinJS.Application;
app.onactivated = function () {
document.getElementById("pageTitle").innerText = "Rock it!";
};
// This code *doesn't* fire the onactivated event:
// It initially displays "Page of coolness..." in the page title.
// After 5 seconds, it adds "Gettin' there...Almost made it..."
// to the the page title, but "Rock it!" never gets displayed
WinJS.Promise.timeout(5000).then(function () {
document.getElementById("pageTitle").innerText += "Gettin' there...";
app.start();
document.getElementById("pageTitle").innerText += "Almost made it...";
});
})();
为什么app.start()
在 5 秒延迟后调用会导致activated
事件不触发?