9

我只是想分享一个我在数据表组件中解决的错误。

显然,当数据表脚本出现问题时,它会调用 _fnLog 并将错误输出到控制台。

这是函数的代码:

function _fnLog(oSettings, iLevel, sMesg) {
        var sAlert = (oSettings === null) ?
            "DataTables warning: " + sMesg :
            "DataTables warning (table id = '" + oSettings.sTableId + "'): " + sMesg;

        if (iLevel === 0) {
            if (DataTable.ext.sErrMode == 'alert') {
                alert(sAlert);
            }
            else {
                throw sAlert;
            }
            return;
        }
        else {
            if (console !== undefined && console.log) {
                console.log(sAlert);
            }
        }
    }

注意这里的最后几行是检查“console”是否存在,然后执行 console.log 操作。在 IE 中,控制台对象不存在,除非我们正在运行调试器。这使得发现这个错误变得非常困难和烦人。无论如何,您不能像那样引用“控制台”。IE 无一例外地停止脚本。您必须使用“window”对其进行限定,以便正确的脚本是

if (window.console !== undefined && console.log) {
      window.console.log(sAlert);
}

我希望这会有所帮助,因为我只花了一个小时在这上面:)

埃亚尔

4

0 回答 0