Windows 8 JavaScript共享魅力 - “此应用无法共享。”

时间:2012-12-05 23:19:57

标签: windows-8

我的Windows 8应用程序允许在1页(高分页面)上共享工作正常但由于共享代码仅在高分页面上,应用程序说“此应用程序无法共享”。当用户尝试在高分页面以外的页面上共享时。

它应该说“现在没什么可分享的。”为了解决这个问题,我在主页上添加了共享代码,这解决了问题,但打破了高分页面上的共享,我收到此错误“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 个答案:

答案 0 :(得分:1)

当您离开页面时,您需要取消附加“datarequested”事件。这是,当按下后退按钮时:

dtm2.getForCurrentView().removeEventListener("datarequested", this.onDataRequested);