2012-12-05 38 views
0

我的Windows 8應用程序允許共享1頁(高分頁),它工作正常,但由於共享代碼只在高分頁上應用程序說「這個應用程序無法共享」。當用戶試圖在高分頁面以外的頁面上分享時。Windows 8 JavaScript共享魅力 - 「此應用程序無法共享。」

應該說「現在沒有什麼可以共享的。」爲了解決這個問題,我將共享代碼添加到主頁,這解決了問題,但打破了高分頁面上的共享,我得到這個錯誤「0x8000000e - JavaScript運行時錯誤:在意外的時間調用了一個方法。」

的主頁我的JavaScript代碼是:

(function() { 
    "use strict"; 

    // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    var storage = Windows.Storage; 
    var dtm2 = Windows.ApplicationModel.DataTransfer.DataTransferManager; 
    // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

    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. 
     ready: function (element, options) { 
      // TODO: Initialize the page here. 

      // Initialize everything 
      initialize(); 

      // Button listeners 
      var add = document.getElementById("add"); 
      add.addEventListener("click", this.linkClickEventHandler, false); 

      var sub = document.getElementById("sub"); 
      sub.addEventListener("click", this.linkClickEventHandler, false); 

      var mul = document.getElementById("mul"); 
      mul.addEventListener("click", this.linkClickEventHandler, false); 

      var div = document.getElementById("div"); 
      div.addEventListener("click", this.linkClickEventHandler, false); 

      // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
      dtm2.getForCurrentView().addEventListener("datarequested", this.onDataRequested); 
      // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     }, 

     linkClickEventHandler: function (eventInfo) { 
      ope = this.id; 
      var link = "/pages/quiz/quiz.html"; 
      WinJS.Navigation.navigate(link); 
     }, 

     // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     onDataRequested: function (e) { 

     }, 
     // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

     unload: function() { 
      // TODO: Respond to navigations away from this page. 

      // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
      WinJS.Navigation.removeEventListener("datarequested", this.onDataRequested); 
      // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

     }, 
    }); 
})(); 

的高分頁面我的JavaScript代碼是:

// For an introduction to the Page Control template, see the following documentation: 
// http://go.microsoft.com/fwlink/?LinkId=232511 
(function() { 
    "use strict"; 

    // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    var storage = Windows.Storage; 
    var dtm = Windows.ApplicationModel.DataTransfer.DataTransferManager; 
    // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

    WinJS.UI.Pages.define("/pages/results/results.html", { 
     // This function is called whenever a user navigates to this page. It 
     // populates the page elements with the app's data. 
     ready: function (element, options) { 
      // TODO: Initialize the page here. 

      // Show results 
      showResults(); 

      // Button listeners 
      var btnHome = document.getElementById("btnHome"); 
      btnHome.addEventListener("click", this.linkClickEventHandler, false); 

      // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
      dtm.getForCurrentView().addEventListener("datarequested", this.onDataRequested); 
      // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

     }, 

     linkClickEventHandler: function (eventInfo) { 
      var link = "/pages/home/home.html"; 
      WinJS.Navigation.navigate(link); 
     }, 

     // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     onDataRequested: function (e) { 
      var request = e.request; 
      request.data.properties.title = "Your Simple Math Results"; 

      var message = shareLine1 + " "; 
      message += shareLine2 + " "; 
      message += shareLine3; 
      request.data.setText(message); 
     }, 
     // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

     unload: function() { 
      // TODO: Respond to navigations away from this page. 

      // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
      WinJS.Navigation.removeEventListener("datarequested", this.onDataRequested); 
      // SHARING ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

     }, 

     updateLayout: function (element, viewState, lastViewState) { 
      /// <param name="element" domElement="true" /> 

      // TODO: Respond to changes in viewState. 
     } 
    }); 
})(); 

回答

1

您需要在您導航出到卸裝了「datarequested」事件的頁面。這是,當按下後退按鈕時:

dtm2.getForCurrentView().removeEventListener("datarequested", this.onDataRequested); 
相關問題