gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:02:28 25 4
gpt4 key购买 nike

我手上有一个棘手的小问题,有可能让我的工作耽误至少一周。我正在尝试从 URL 中抓取网页,并在浏览器中显示抓取的网页(除了 javascript)。我的抓取发生在nodejs中我的程序流程是:

  1. 从 URL 获取 HTML 页面到我的服务器。
  2. 使用 htmlparser2 从页面获取所有 CSS 和图像链接(不是 JavaScript 链接)
  3. 解析 CSS 以检查是否有任何外部链接(即图像 URL、CSS 导入链接等)
  4. 下载这些新资源并重复步骤 3 和 4,直到下载完所有资源。
  5. 从 HTML 页面中删除所有脚本标记(我使用简单的字符串操作来执行此操作)。
  6. 添加我自己的单个脚本标记,其中包含指向我的 javascript 的链接,该标记是使用 Google Closure(使用 Canvas 添加一种复杂的动态叠加层)编译到 HTML 中的。
  7. 在浏览器中打开下载的 HTML 的 URL,以从我的服务器提供该页面。
  8. 页面在浏览器中打开,但由我的服务器提供,我的 JavaScript 运行并显示最终结果。

但是我在第8步遇到了问题。我已从 HTML 页面中删除了所有脚本标记,但某些页面使用 onloadonclick 等属性从 HTML 本身进行 javascript 函数调用。

例如:

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

此类页面会在我的浏览器中引发 Uncaught ReferenceError :xxx未定义

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

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

我考虑过从服务器上的 HTML 中删除所有此类属性,但后来我发现了 list of all such attributes出于性能原因而决定不使用它,因为它的列表很长(如果我能找到一种有效的方法来做到这一点,我仍然愿意这样做)。

我正在寻找一种方法来处理由于 undefined reference 而可能在我的HTML中出现的所有JavaScript错误,然后抑制它们。我可以使用以下方法捕获错误:

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

但是当发生 Uncaught ReferenceError 错误时,我可以做些什么来不中断执行流程吗?基本上,有没有办法在 JavaScript 中捕获并处理 ReferenceError

提前致谢!!

最佳答案

Try Catch 是你的 friend

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

关于javascript - 如何抑制浏览器中的 javascript 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25883381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com