我在适用于windows 8.1的WinJS应用程序中遇到单页导航问题:我的应用程序上有很多页面,其中许多页面都有相同ID的元素(例如,指向同一个名为"myPage"的页面的链接)。但奇怪的事情发生了:在"第1页"上,我有"第2页"one_answers"第3页"的链接。在"page2"上,我有一个链接到"page1"one_answers"page3"。如果我从"第1页"导航到"第2页",然后返回到"第1页面",最后导航到"页面3",那么最后一个链接不会运行。在"page1"的加载函数中,我设置了所有用于导航的事件处理程序,如以下示例
document.getElementById("page3").onclick = function () {
WinJS.Navigation.navigate("/pages/page3/page3.html");
};
在"page2"中链接到"page3"的加载功能上存在相同的代码元素得到了相同的id。如果我直接导航到"page3"而不经过"page2",它可以正常工作。
有没有一种方法可以在不更改所有元素id的情况下避免这个问题?
您必须等待,直到加载完所有资源。
WinJS.UI.processAll().done(function () {
document.getElementById("page3").onclick = function () {
WinJS.Navigation.navigate("/pages/page3/page3.html");
};
});
更多信息:https://msdn.microsoft.com/es-es/library/windows/apps/hh440975.aspx
您的onClick()
函数中缺少WinJS.UI.processAll()
函数。基本上,将您的逻辑封装为该函数将解决问题。