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

我手上有一个棘手的小问题,可能会把我的工作放到最后一个星期。 我试图从url中取消一个网页,并显示在我的浏览器中,除了javascript的网页。 我的抓取发生在nodejs我的程序stream程是:

  1. 从url获取HTML页面到我的服务器。
  2. 使用htmlparser2获取所有的CSS和图像链接(不是JavaScript链接)
  3. parsingCSS来检查任何外部链接(例如图片URL,CSS导入链接等)
  4. 下载这些新的资源,并重复步骤3和4,直到所有资源下载。
  5. 从HTML页面中删除所有脚本标记(我使用简单的string操作来完成)。
  6. 添加我自己的单个脚本标记,链接到我使用Google Closure编译的JavaScript(它使用canvas添加了一种复杂的dynamic重叠)到HTML。
  7. 在浏览器中打开下载的HTML的URL,从我的服务器提供页面。
  8. 该页面在浏览器中打开,但是从我的服务器提供,我的JavaScript运行,并显示最终结果。

但是我在第八步遇到了一个问题。 我已经从HTML页面中删除了所有脚本标签,但是有些页面使用onloadonclick等属性从HTML本身调用javascript函数。

例如:

 <body onload="xxx()">....</body> 

这样的页面会引发一个Uncaught ReferenceError: xxx is not defined在我的浏览器中Uncaught ReferenceError: xxx is not defined

某些浏览器(如Google Chrome)在控制台中logging此错误,但不会停止执行,所以我的JavaScript运行没有任何问题。

但是某些浏览器,如Firefox,Opera和IE(我相信会有更多的)停止执行并进入debugging模式,我的JavaScript永远不会运行。

我想从我的服务器上的HTML删除所有这些属性,但后来我发现了所有这些属性列表,并决定反对它的性能的原因,因为它的一长串(我仍然打开它,如果我能find一个有效的方式做这个)。

我正在寻找一种方法来处理可能出现在我的HTML由于undefined references ,然后压制他们的所有JavaScript错误。 我可以捕捉错误使用:

 window.onerror = function(msg, url, line, col, error) { alert(msg); } 

但是,我可以做一些事情,当Uncaught ReferenceError错误发生时不打破执行stream程? 基本上,有没有办法在JavaScript中捕捉和处理ReferenceError

感谢提前!

试试Catch是你的朋友

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