2015-07-22 36 views
0

因此,目前在我的Windows 8 JavaScript應用程序(基於導航模板)上,從應用程序啓動(home.html)的主頁導航到default.js初始化點,在主頁的.html的相應home.js文件,我創建這個手勢系統來處理指縮放和滑動來回(其中正常工作):Windows 8 Javascript App Event Listener問題

的問題是,雖然當我瀏覽到另一個網頁使用

(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:function中的所有其他事件偵聽器都可以完美工作(其他偵聽器從上面的代碼中省略)。我在這裏做了什麼不對嗎? 非常感謝!

回答

0

導航到的頁面也有一個ID爲「main-content-area」的div,事件偵聽器正在轉到舊頁面而不是導航回頁面。