2

Windows 8向けの開発はかなり新しいので、かなりフラットなモデルのアプリに取り組んでいます。調べてみましたが、後方ナビゲーションを防ぐためにWinJSページを設定する方法について明確な答えが見つからないようです。APIを掘り下げてみましたが、何も言えません。

私が使おうとしているコードは

WinJS.Navigation.canGoBack = false;

運が悪い、それはプロパティが読み取り専用であることに不平を言い続けます、しかしそれを変更するためのセッターメソッドはありません。

よろしくお願いします、〜Sean

4

3 に答える 3

7

canGoBackゲッター(で定義base.js)のみがあり、バックスタックの有無を反映しています。つまりnav.history.backstack

ボタン自体の外観は、関連付けられたボタンDOMオブジェクトのdisabled属性によって制御されます。この属性は、可視性を制御するCSSセレクターの一部です。したがって、[戻る]ボタンの表示を自分でいじくり回す場合は、ナビゲーション配管が同じことをしていることに注意してください。

バックスタックを明示的に設定することは可能です。次のコードを使用して、履歴の復元とbeforenavigate を使用したナビゲーションの防止を含むナビゲーションおよびナビゲーション履歴サンプルのサンプルがあります。

    // in ready
    WinJS.Navigation.addEventListener("beforenavigate", this.beforenavigate);


    //
    beforenavigate: function (eventObject) {
        // This function gives you a chance to veto navigation. This demonstrates that capability
        if (this.shouldPreventNavigation) {
            WinJS.log && WinJS.log("Navigation to " + eventObject.detail.location + " was prevented", "sample", "status");
            eventObject.preventDefault();
        }
    },
于 2013-03-26T05:06:30.880 に答える
3

canGoBackを変更することはできませんが、ボタンを無効にして非表示にし、履歴スタックを解放することはできます。

    // disabling and hiding backbutton
    document.querySelector(".win-backbutton").disabled = true;
    // freeing navigation stack
    WinJS.Navigation.history.backStack = [];

これにより、後戻りを防ぎ、前に進むことができます。

于 2013-04-17T10:22:17.470 に答える
0

そのため、戻るボタンを無効にするさまざまな方法を検索して試行することで、最終的に適切な解決策が見つかりました。これは、別のstackoverflowの質問から採用されました。

元のアルゴリズム:JavaScriptでクラスごとに要素を取得する方法は?


私の解決策

フラグメントページの開始時に、ページ定義がready:関数の宣言を開始するとすぐに、上記のアルゴリズムの適応バージョンを使用し、結果の要素選択を使用してdisabled属性を設定しました。

        // Retrieve Generated Back Button
        var elems = document.getElementsByTagName('*'), i;

        for (i in elems)
        {
            if((" "+elems[i].className+" ").indexOf("win-backbutton") > -1)
            {
                var d = elems[i];
            }
        }

        // Disable the back button
        d.setAttribute("disabled", "disabled");

このコードは、ページのDOMからすべての要素を取得し、生成された戻るボタン用にフィルタリングします。適切な要素が見つかると、それが変数に割り当てられ、そこからdisabledプロパティを設定できます。


WinJSナビゲーションアプリでデフォルトのナビゲーションを回避するためのドキュメントがあまり見つからなかったため、失敗したメソッドをいくつか示します(参照用)。

  • クラスと設定による要素の取得| HTMLとjavascriptの経験がほとんどないので、間違って失敗した可能性があります。

  • 上記の方法を使用しますが、forループ内で属性を設定すると、アプリが破損し、不明な理由でアプリがフリーズします。

  • ナビゲーションが終了する前に、default.jsに属性を設定します。| javascriptの呼び出しは、おそらくページの初期化状態が原因で、呼び出されたメソッドまたはDOM要素のいずれかを認識できません。

他にもいくつかありましたが、ページの読み込み後に要素を取得するためのより良い方法があるはずです。誰かが私を啓発することができれば、私は最も感謝するでしょう。〜SeanR。

于 2013-03-26T22:01:53.010 に答える