支持Windows应用商店应用程序中的jQuery

时间:2013-04-13 20:41:19

标签: javascript jquery windows-8 windows-store-apps

这是我的default.html文件

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>app1</title>

<!-- WinJS references -->
<link href="//Microsoft.WinJS.1.0/css/ui-dark.css" rel="stylesheet" />
<script src="//Microsoft.WinJS.1.0/js/base.js"></script>
<script src="//Microsoft.WinJS.1.0/js/ui.js"></script>

<!-- app1 references -->
<link href="/css/default.css" rel="stylesheet" />
<script src="/js/default.js"></script>
<script src="/js/jquery.js"></script>

</head>
<body>
<button id="buttonYouWantToClick">Button</button>
<div id="result"></div>

<p>Content goes here</p>
</body>
</html>

和default.js文件。我在jquery函数之前添加了app.start()代码。

    ...
    $(document).ready(function () {
        $('#buttonYouWantToClick').click(function () {
            $('#result').html('jQuery works!');
        });
    });
    app.start();
})();

我也试过args.setPromise(WinJS.UI.processAll());

(function () {
"use strict";

WinJS.Binding.optimizeBindingReferences = true;

var app = WinJS.Application;
var activation = Windows.ApplicationModel.Activation;

app.onactivated = function (args) {
    if (args.detail.kind === activation.ActivationKind.launch) {
        if (args.detail.previousExecutionState !==   activation.ApplicationExecutionState.terminated) {
            // TODO: This application has been newly launched. Initialize
            // your application here.
        } else {
            // TODO: This application has been reactivated from suspension.
            // Restore application state here.
        }
        args.setPromise(WinJS.UI.processAll());
        $(document).ready(function () {
            $('#buttonYouWantToClick').click(function () {
                $('#result').html('jQuery works!');
            });
        });

    }
};
app.oncheckpoint = function (args) {
    // TODO: This application is about to be suspended. Save any state
    // that needs to persist across suspensions here. You might use the
    // WinJS.Application.sessionState object, which is automatically
    // saved and restored across suspension. If you need to complete an
    // asynchronous operation before your application is suspended, call
    // args.setPromise().
};

app.start();
})();

在两种情况下不起作用。我得到了同样的错误

SCRIPT5009:ms-appx://a8fcf58a-3cda-4e8c-ae43-733030e738e2/js/default.js第38行第5行未处理的异常 0x800a1391 - JavaScript运行时错误:'$'未定义 文件:default.js,行:38,列:5 HTML1300:导航发生。 文件:default.html

APPHOST9623:由于此错误,应用无法解析ms-appx://a8fcf58a-3cda-4e8c-ae43-733030e738e2/js/jquery.js:RESOURCE_NOT_FOUND。 Visual Studio当前未附加到支持脚本诊断的脚本调试目标。

提前致谢。

3 个答案:

答案 0 :(得分:2)

请参阅此博客文章here

答案 1 :(得分:1)

从版本2.0开始,jQuery可以在Windows应用商店应用中运行,正如其他人已经指出的那样。我刚从http://jquery.com/download/下载jQuery 2.0并将其放入新的应用程序中确认了这一点:

<link href="/css/default.css" rel="stylesheet" />
<script src="/js/default.js"></script>
<script src="js/jquery-git2.js"></script>

以及default.js中的以下小变化:

app.onactivated = function (args) {
    if (args.detail.kind === activation.ActivationKind.launch) {
        if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
            $("p").html("App Launched");
        } else {
            $("p").html("App Reactivated from Suspension");
        }
        args.setPromise(WinJS.UI.processAll());
    }
};

这没有任何问题。确保将代码放在onactivated处理程序中。否则,当此代码运行时,jQuery可能还不可用。

您很可能下载了jQuery的错误副本,或者没有将其正确地包含在您的应用程序中。请按照以下步骤操作:

  1. http://jquery.com/download/
  2. 下载jQuery
  3. 在您的项目中,右键单击/js目录并添加/现有项
  4. /js拖动jQuery文件,然后在default.js引用
  5. 之后删除它
  6. app.onactivated回调中添加jQuery代码(请参阅上面的代码)

答案 2 :(得分:1)

jQuery工作正常(某些规定),但我会根据您发布的错误假设您在磁盘上添加了该文件,但未将其添加到您的项目中。 它不在您的包中,因此无法找到它,因此任何jQuery调用都会失败,

点击&#34;解决方案资源管理器&#34;到&#39;显示所有文件&#34;然后右键单击它并包含在项目中,重建并再次运行。

我在这里使用了这个特定版本没有问题:

https://github.com/appendto/jquery-win8

我建议关注2.0,但如果你想要一个发布的版本,请尝试一下。

我还发现当文本文件没有编码时,有些人会出错(您可以打开它并选择&#39;另存为&#39;然后选择向下 - 用编码保存,但我不相信这是一个问题,只为它提供参考)