Windows 8 Javascript应用程序事件监听器问题

Windows 8 Javascript App Event Listener Issue

本文关键字:监听器 问题 事件 应用程序 Javascript Windows      更新时间:2023-09-26

所以目前在我的windows 8 javascript应用程序中(基于导航模板),在应用程序启动时从default.js初始化点(home.html)导航到主页(home.html),在home.html对应的home.js文件中,我创建了这个手势系统来处理缩放和来回滑动(正常工作):

(function () {
    "use strict";
    WinJS.UI.Pages.define("/pages/home/home.html", {
        // This function is called whenever a user navigates to this page. It
        // populates the page elements with the app's data.
        processed: function (element, options) {
            MyGlobals.loadBooks();
            if (!MyGlobals.localSettings.values['firstRunCompleted']) {
                MyGlobals.localSettings.values['firstRunCompleted'] = true;
                MyGlobals.loadXmlBooksIntoDatabase();
                //MyGlobals.integrityCheck();
            };
            WinJS.Resources.processAll();
        },
        ready: function (element, options) {
            var myGesture = new MSGesture();
            var chapterContainer = document.getElementById("main-content-area");
            myGesture.target = chapterContainer;
            WinJS.Namespace.define("MyGlobals", {
                myGesture: myGesture,
            });
            chapterContainer.addEventListener("MSGestureStart", this.gestureListener, false);
            chapterContainer.addEventListener("MSGestureEnd", this.gestureListener, false);
            chapterContainer.addEventListener("MSGestureChange", this.gestureListener, false);
            chapterContainer.addEventListener("MSInertiaStart", this.gestureListener, false);
            chapterContainer.addEventListener("MSGestureTap", this.gestureListener, false);
            chapterContainer.addEventListener("MSGestureHold", this.gestureListener, false);
            chapterContainer.addEventListener("pointerdown", this.gestureListener, false);
        },
      gestureListener: function (evt) {
            console.log("in gesturelistener now");
            if (evt.type == "pointerdown") {
                MyGlobals.myGesture.addPointer(evt.pointerId);
                return;
            }
            if (evt.type == "MSGestureStart") {
                if (evt.translationX < -3.5) {
                    MyGlobals.nextChapterHandler();
                };
                if (evt.translationX > 3.5) {
                    MyGlobals.previousChapterHandler();
                }
            };
            if (evt.type == "MSGestureChange") {
                if (evt.scale < 1) {
                    MyGlobals.fontSizeModify("decrease");
                };
                if (evt.scale > 1) {
                    MyGlobals.fontSizeModify("increase");
                }
            };
        },

问题是,当我使用WinJS.Navigation.navigate()导航到另一个页面时,当我使用WinJS.Navigation.navigate()导航回home.html时,上述所有事件监听器都不起作用,似乎没有添加到chapterContainer(从检查实时DOM)。但是,ready:函数中的所有其他事件侦听器都可以完美地工作(其他侦听器从上面的代码中省略)。我在这里做错了什么吗?非常感谢!

被导航到的页面也有一个id为"main-content-area"的div,并且事件侦听器将进入旧页面,而不是被导航到的页面。