【问题标题】:Javascript code not working in Visual Studio Express 2013 Preview for WindowsJavascript 代码在 Windows 的 Visual Studio Express 2013 Preview 中不起作用
【发布时间】:2013-11-04 01:00:31
【问题描述】:

所以,这是我的第一个 Windows 8 应用程序,我正在使用 html/css 和 JS 开发它 我一开始是在浏览器上开发的(我知道,这不是一个好习惯),我想在 Windows 8.1 应用程序上尝试一下 一切似乎都有一些我很容易修复的小故障,但 javascript 代码根本无法运行,即使它在浏览器上运行良好。

简短的故事:该应用程序可让您从 1 小时倒计时或 1000 万倒计时(出于某种目的),每个倒计时都有两个按钮:一个开始和一个停止按钮。

我不知道为什么,cosole显示以下错误:HTML1701

代码如下:

(function () {
"use strict";

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());
    }
};

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().

    $(document).ready(function () {
        var h, m, s, h1, m1, s1, output, output1, inter, inter1;

        //Preparing all the functions

        //facts' animation function

        function facts() {
            function solve() {
                setTimeout(function () {
                    $("#fun1").animate({ opacity: "0", }, 500, function () {
                        $("#fun2").animate({ opacity: "1" }, 500);
                    });
                }, 10500);
                setTimeout(function () {
                    $("#fun2").animate({ opacity: "0", }, 500, function () {
                        $("#fun3").animate({ opacity: "1" }, 500);
                    });
                }, 21500);
                setTimeout(function () {
                    $("#fun3").animate({ opacity: "0", }, 500, function () {
                        $("#fun4").animate({ opacity: "1" }, 500);
                    });
                }, 31500);
                setTimeout(function () {
                    $("#fun4").animate({ opacity: "0", }, 500, function () {
                        $("#fun1").animate({ opacity: "1" }, 500);
                    });
                }, 41500);
            }
            solve();
            setInterval(function () { solve(); }, 41520);

            //Work Counting functions

        }

        function startWork() {
            h = 1;
            m = 0;
            s = 0;
            document.getElementById("WTM").innerHTML = "01:00:00"
            inter = setInterval(function () { countWork() }, 1000);
        }

        function countWork() {
            if (s == 0 && m == 0 && h == 0) {
                $("#StartW").animate({ opacity: 1, }, 500);
                clearInterval(inter);
            }
            else if (s == 0 && m == 0 && h != 0) {
                h = h - 1;
                m = 59;
                s = 59;
            }
            else if (s == 0 && m != 0) {
                m = m - 1;
                s = 59;
            }
            else if (s != 0)
            { s = s - 1; }
            if (typeof (s) != "string" && s < 10)
            { s = "0" + s; }
            if (typeof (m) != "string" && m < 10)
            { m = "0" + m; }
            if (typeof (h) != "string" && h < 10)
            { h = "0" + h; }
            output = h + ":" + m + ":" + s;
            document.getElementById("WTM").innerHTML = output;
        }

        //Rest Counting functions

        function startRest() {
            h1 = 0;
            m1 = 10;
            s1 = 0;
            document.getElementById("RTM").innerHTML = "00:10:00";
            inter1 = setInterval(function () { countRest() }, 1000);
        }

        function countRest() {
            if (s1 == 0 && m1 == 0 && h1 == 0) {
                $("#StartR").animate({ opacity: 1, }, 500);
                clearInterval(inter1);
            }
            else if (s1 == 0 && m1 == 0 && h1 != 0) {
                h1 = h1 - 1;
                m1 = 59;
                s1 = 59;
            }
            else if (s1 == 0 && m1 != 0) {
                m1 = m1 - 1;
                s1 = 59;
            }
            else if (s1 != 0)
            { s1 = s1 - 1; }

            if (typeof (s1) != "string" && s1 < 10)
            { s1 = "0" + s1; }
            if (typeof (m1) != "string" && m1 < 10)
            { m1 = "0" + m1; }
            if (typeof (h1) != "string" && h1 < 10)
            { h1 = "0" + h1; }
            output1 = h1 + ":" + m1 + ":" + s1;
            document.getElementById("RTM").innerHTML = output1;
        }

        //Calling the needed functions

        $("#StopW").click(function () {
            clearInterval(inter);
            document.getElementById("WTM").innerHTML = "00:00:00";
            $("#StartW").animate({ opacity: 1, }, 500);
        });

        $("#StartW").click(function () {
            startWork();
            $("#StartW").animate({ opacity: 0, }, 2000);
        });


        $("#StopR").click(function () {
            clearInterval(inter1);
            document.getElementById("RTM").innerHTML = "00:00:00";
            $("#StartR").animate({ opacity: 1, }, 500);

        });

        $("#StartR").click(function () {
            startRest();
            $("#StartR").animate({ opacity: 0, }, 2000);
        });

        facts();

    });
};

app.start();
})();

【问题讨论】:

    标签: javascript visual-studio-2010 windows-8 windows-8.1


    【解决方案1】:

    看来您正在使用 jQuery。确保您使用的是 jQuery 2.0 并从您的应用程序包中本地提供它。

    您看到的具体错误可能是使用innerHTML 设置倒计时的结果。由于应用程序以提升的权限运行(可能访问用户文件等),因此您的代码不得做可能引入漏洞的事情。 innerHTML 可用于动态加载脚本,因此不鼓励使用。

    在您的应用程序中,您似乎可以轻松地改用innerText。如果您必须使用innerHTML,请尝试使用toStaticHTML() 或将其包装在MSApp.execUnsafeLocalFunction() 中。你可以阅读更多关于developing secure apps的信息。

    【讨论】:

      【解决方案2】:

      不再使用 VS2013 预览版。 RTM 已经出来了。在此处获取最终版本:

      http://www.microsoft.com/visualstudio/eng/downloads#d-2013-express

      【讨论】:

        猜你喜欢
        • 2013-08-08
        • 2016-02-14
        • 1970-01-01
        • 2014-11-05
        • 1970-01-01
        • 2015-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多