0

私はWindows8の検索コントラクト機能、特に検索コントラクトをプロジェクトに追加したときに作成されるデフォルトのsearchResults.jsファイルを使用しています。メインウィンドウではなく、一時停止または終了した状態のアプリを検索しようとすると、問題が発生します。

このためのコードは次のとおりです。

// Handles when a users performs a search and the app is not already the main app
WinJS.Application.addEventListener("activated", function (args) {
    //If activation kind is search...
    if (args.detail.kind === appModel.Activation.ActivationKind.search) {

        args.setPromise(ui.processAll().then(function () {
            // If there is no current navigation  location 
            if (!nav.location) {
                // Declare object
                nav.history.current = { location: Application.navigator.home, initialState: {} };
            }
            // Else navigate to searchPageURI, 
            return nav.navigate(searchPageURI, { queryText: args.detail.queryText });
        }));
    }
});

コードを分解するために、自分でコメントを追加しました。これで前提がわかりました。このコードは、アプリがどのようにアクティブ化されたかを確認し、既存のナビゲーション場所であるかどうかに応じて2つの異なるプロセスを実行します。ただし、アプリを実行して外部から検索すると、次のエラーが発生しますJavaScript runtime error: 'Application' is undefined。それは次の行を参照しています:

nav.history.current = { location: Application.navigator.home, initialState: {} };

誰かがこれが起こっている理由と私が定義したこと、または私がそれをどこで定義すべきかを説明できますか?

4

2 に答える 2

1

必ず含める

<script src="/js/navigator.js"></script>

default.htmlで

于 2013-06-24T18:47:23.373 に答える
-1

これは、組み込みの「検索コントラクト」を空白のプロジェクトで追加する場合にのみ発生する問題のようです。他のタイプのプロジェクトテンプレートを使用して検索コントラクトを追加すると、明らかに機能します。

空白のテンプレートで修正するための私の解決策は、を削除してApplication.、を残すことでしたNavigator.home。なぜこれが機能するのかを完全には理解していないことを認めなければなりませんが、これを実行すると、プロジェクトを再度コンパイルすることができました。

誰かがこれが機能する理由の説明でこれを更新できれば、Win 8開発が取り上げられるにつれて、将来的に他の開発者にとって役立つかもしれないと確信しています。

于 2012-11-27T09:44:33.913 に答える