如何在浏览器中抑制javascript错误?
我手上有一个棘手的小问题,可能会把我的工作放到最后一个星期。 我试图从url中取消一个网页,并显示在我的浏览器中,除了javascript的网页。 我的抓取发生在nodejs我的程序stream程是:
- 从url获取HTML页面到我的服务器。
- 使用
htmlparser2
获取所有的CSS和图像链接(不是JavaScript链接) - parsingCSS来检查任何外部链接(例如图片URL,CSS导入链接等)
- 下载这些新的资源,并重复步骤3和4,直到所有资源下载。
- 从HTML页面中删除所有脚本标记(我使用简单的string操作来完成)。
- 添加我自己的单个脚本标记,链接到我使用
Google Closure
编译的JavaScript(它使用canvas添加了一种复杂的dynamic重叠)到HTML。 - 在浏览器中打开下载的HTML的URL,从我的服务器提供页面。
- 该页面在浏览器中打开,但是从我的服务器提供,我的JavaScript运行,并显示最终结果。
但是我在第八步遇到了一个问题。 我已经从HTML页面中删除了所有脚本标签,但是有些页面使用onload
, onclick
等属性从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 }