在javascript中使用fileName和lineNumber抛出跨浏览器语法错误

时间:2015-11-11 15:00:11

标签: javascript cross-browser

我正在开发一个代码解析器,现在我会抛出一个带有特定文件名和行号的语法错误。我试过了:

new SyntaxError(message, fileName, lineNumber)

它在Firefox中运行良好,但Chrome开发人员工具没有显示正确的文件或行号。 我搜索了很多,但我找不到任何关于它的东西。是否有针对它的crossbrowser解决方案?

1 个答案:

答案 0 :(得分:0)

https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError#Browser_compatibility

声明它适用于所有现代浏览器。你忘记了throw

try {
     var scripts = document.getElementsByTagName('script');
     var lastScript = scripts[scripts.length - 1];
     var scriptName = lastScript.src;

     throw new SyntaxError("Hello", scriptName, 10);
} catch (e) {
     console.log(e instanceof SyntaxError); // true
     console.log(e.message); // "Hello"
     console.log(e.name); // "SyntaxError"
     console.log(e.fileName); // "someFile.js"
     console.log(e.lineNumber); // 10
     console.log(e.columnNumber); // 0
     console.log(e.stack); // "@Scratchpad/2:11:9\n"
}

http://jsfiddle.net/7xs488mf/