尝试从主应用程序外部激活Win 8应用程序时应用程序未定义错误

时间:2012-11-18 21:29:57

标签: javascript search windows-8

我正在通过Windows 8搜索合同功能,特别是将搜索合同添加到项目时创建的默认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 });
        }));
    }
});

我自己添加了评论以尝试细分代码。现在我理解了这个前提,这段代码会检查应用程序是如何激活的,并根据它们是否是现有导航位置运行两个不同的进程。但是,当我运行应用程序并从外部搜索时,我收到的错误是:JavaScript runtime error: 'Application' is undefined。它指的是:

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

有人可以解释为什么会发生这种情况,我已经定义了什么,或者我应该在哪里定义它?

2 个答案:

答案 0 :(得分:1)

确保包含

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

答案 1 :(得分:-1)

这似乎是一个问题,只有在您使用内置的“搜索合同”添加空白项目时才会发生。如果您将搜索合同与其他类型的项目模板一起添加,那么它显然有效。

我在空白模板中修复它的解决方案是删除Application.,只留下Navigator.home。我不得不承认我并不完全理解为什么这样可行,但是一旦我完成了这个,我就能够再次编译我的项目。

如果有人可以通过对其原因进行解释来更新此内容,我确信在Win 8开发过程中,其他开发人员将来可能会有所帮助。