如何抑制浏览器中的javascript错误?

时间:2014-09-17 06:05:33

标签: javascript html node.js error-handling html-parsing

我手上有一个棘手的小问题,有可能将我的工作放在我的至少一周后。我正在尝试从网址中删除网页,并在浏览器中显示已删除的网页,但javascript除外。我的抓取发生在nodejs中 我的程序流程是:

  1. 从网址获取HTML页面到我的服务器。
  2. 使用htmlparser2(不是javascript链接)
  3. 从页面获取所有CSS和图片链接
  4. 解析CSS以检查是否有任何外部链接(即图像URL,CSS导入链接等)
  5. 下载这些新资源并重复步骤3& 4直到下载所有资源。
  6. 从HTML页面中删除所有脚本标记(我使用简单的字符串操作来执行此操作)。
  7. 添加我自己的单个脚本标记,其中包含指向我的javascript的链接,该链接使用Google Closure(使用画布添加一种复杂的动态叠加层)编译到HTML中。
  8. 在浏览器中打开下载的HTML的URL,以便从我的服务器提供该页面。
  9. 该页面在浏览器中打开,但是从我的服务器提供,我的javascript运行并显示最终结果。
  10. 但是我在第8步遇到了问题。 我已从HTML页面中删除了所有脚本标记,但有些页面使用onloadonclick等属性从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提前!!

1 个答案:

答案 0 :(得分:1)

尝试Catch是你的朋友

try {
 // code
}
catch (e) {
// handle the exception or ignore
}