0

这是我的 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 0x800a1391 第 38 行第 5 列未处理的异常 - JavaScript 运行时错误:'$' 未定义文件:default.js,行:38,列:5 HTML1300:发生导航。文件:default.html

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

提前致谢。

4

2 回答 2

1

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

单击“解决方案资源管理器”以“显示所有文件”并右键单击它并包含在您的项目中,重新构建并再次运行。

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

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

我建议密切关注 2.0,但如果您想要发布版本,请尝试一下。

我还看到有些人在文本文件不是 utf-8 编码时出错(您可以打开它并选择“另存为”,然后选择向下插入符号以编码保存,但我不相信在这里成为一个问题,只是提供它作为参考)

于 2013-04-17T00:24:25.550 回答
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/下载 jQuery
  2. 在您的项目中,右键单击/js目录并Add / Existing Item
  3. 将 jQuery 文件/js拖放到default.js引用之后
  4. app.onactivated在回调中添加 jQuery 代码(参见上面的代码)
于 2013-04-16T16:32:40.733 回答