我只想分享我在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