我手上有一个棘手的小问题,有可能将我的工作放在我的至少一周后。我正在尝试从网址中删除网页,并在浏览器中显示已删除的网页,但javascript除外。我的抓取发生在nodejs中 我的程序流程是:
htmlparser2
(不是javascript链接)Google Closure
(使用画布添加一种复杂的动态叠加层)编译到HTML中。但是我在第8步遇到了问题。
我已从HTML页面中删除了所有脚本标记,但有些页面使用onload
,onclick
等属性从HTML本身进行javascript函数调用。
例如:
<body onload="xxx()">....</body>
此类网页在我的浏览器中引发Uncaught ReferenceError: xxx is not defined
。
Google Chrome等某些浏览器会在控制台中记录此错误,但不会停止执行,因此我的javascript运行时没有任何问题。
但某些浏览器,如Firefox,Opera和IE(我相信会有更多)停止执行并进入调试模式,我的javascript永远不会运行。
我考虑过在我的服务器上从我的HTML中删除所有这些属性,但之后我找到list of all such attributes并因性能原因而决定反对它,因为它有很长的列表(我仍然是开放的)如果我能找到一种有效的方法来做到这一点)。
我正在寻找一种方法来处理由于undefined references
而导致我的HTML中出现的所有javascript错误,然后禁止它们。
我可以使用以下方法捕获错误:
window.onerror = function(msg, url, line, col, error) {
alert(msg);
}
但是,如果发生Uncaught ReferenceError
错误,我可以做些什么来不破坏执行流程吗?
基本上,有没有办法在javascript中捕获和处理ReferenceError
?
Thanx提前!!
答案 0 :(得分:1)
尝试Catch是你的朋友
try {
// code
}
catch (e) {
// handle the exception or ignore
}