JavaScript 毛病处理与调试——“调试手艺与罕见的IE毛病”的注重要点

将音讯记录到掌握台

console

IE8、Firefox、Chrome和Safari来讲,可经由过程console对象向JavaScript掌握台中写入音讯。对象有以下要领:

  • error(message):将毛病音讯记录到掌握台

  • info(message):将信息音讯记录到掌握台

  • log(message):将平常音讯记录到掌握台

  • warn(message):将正告音讯记录到掌握台

如:

console.log("loging");
console.info("infomation");
console.warn("warning");
console.error("bug");

Opera10.5 之前的版本能够经由过程opera.postError()吸收一个参数输出任何信息。

Java

另有一种计划是运用LiveConnect,也就是JavaScript中运转Java代码。

LiveConnect

向JavaScript掌握台写入音讯的一致接口:

function log(message) {
    if (typeof console == "object") {
        console.log(message);
    } else if (typeof opera == "object") {
        opera.postError(message);
    } else if (typeof java == "object" && typeof java.lang == "object") {
        java.lang.System.out.println(message);
    }
}

将音讯记录到当前页面

这类要领针对IE7等不支持JavaScript掌握台的浏览器非常有效:

function log(message) {
    var console = document.getElementById("debuginfo");
    if (console === null) {
        console = document.createElement("div");
        console.id = "debuginfo";
        document.body.appendChild(console);
    }
    console.innerHTML += "<p>" + message + "</p>";
}

抛出毛病

对大型应用程序来讲,自定义的毛病一般运用assert()函数抛出。对这个函数接收两个参数,一个是求值效果为true的前提,另一个是前提为false时要抛出的毛病。

function assert(condition, message) {
    if (!condition) {
        throw new Error(message);
    }
}

如:

function assert(condition, message) {
    if (!condition) {
        throw new Error(message);
    }
}

function sum(num1, num2) {
    assert((typeof num1 == "number") && (typeof num2 == "number"), "divide(): Both arguments must be numbers.");
    console.log(num1 + num2);
}

sum(321, "abc"); //Uncaught Error: divide(): Both arguments must be numbers.

罕见的IE毛病

  • 操纵停止

  • 无效字符

  • 未找到成员

  • 未知运转时毛病

  • 语法毛病

  • 体系没法找到指定资本

    原文作者:JS菌
    原文地址: https://segmentfault.com/a/1190000004451827
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞