由于console.log,JQuery数据表在IE中崩溃了JS

时间:2012-05-03 09:33:17

标签: jquery internet-explorer datatables

我只想分享我在datatables组件中解决的错误。

显然,当datatables脚本出现问题时,它会调用_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中,除非我们运行调试器,否则控制台对象不存在。这使得发现这个bug非常困难和烦人。无论如何,你不能像那样引用“控制台”。 IE会毫无例外地停止脚本。你必须用“窗口”限定它,所以正确的脚本是

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

我希望这很有用,因为我只花了一个小时的时间:)

的Eyal

0 个答案:

没有答案