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