0

私の 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.
        }
    });
})();
4

1 に答える 1

1

ページから移動するときは、「datarequested」イベントのアタッチを解除する必要があります。これは、戻るボタンが押されたときです。

dtm2.getForCurrentView().removeEventListener("datarequested", this.onDataRequested);
于 2012-12-06T00:34:48.763 に答える