Javascript 错误对浏览器的影响

标签 javascript html

我向将我的脚本添加到其站点的网站提供一些附加服务。从技术上讲,我的脚本不与​​网站的实际功能交互,最多的是读取一些信息,代码的主要部分仅在事件发生后运行(想想像 Google Analytics 之类的东西)。

最近一个错误导致在某些情况下出现“X 未定义”错误,客户坚持认为这个错误导致他们的站点崩溃。他们向我发送了一张显示空白页面的屏幕截图和一张显示错误的控制台屏幕截图,但他们删除了我的代码,因此我无法实时看到它。

我的问题是这些类型的错误是否有可能影响网站。例如,假设此代码在网站上运行:

var tmp = Sizzle('h1');
tmp[0].innerHTML = "test";

假设由于某种原因,在代码运行时未定义 Sizzle,或者页面上没有任何 H1 元素,因此 tmp 为空。在任何情况下产生的错误是否会影响外部环境。例如代码运行的页面?显然,如果我覆盖了 body 元素,那么它会影响网站,但我的问题只是关于“x 未定义”或语法错误。

最佳答案

错误将中断当前函数堆栈的执行。

例如,如果您有一个调用函数的 onclick 事件,并且您在开始时遇到错误,它将不会在该代码之后执行任何操作。但这并不意味着您网站上的任何 JavaScript 将不再工作。一切都会很好并运行。当然,如果有一些重要的事情在错误发生后没有被执行,它会改变你的运行时的逻辑。

您还可以使用 try-catch block 避免错误进入函数堆栈:

function a() {
  var x = new DoesNotExist()
  alert("test a") // this will not alert() as there is an error before
}

function b() {
  try {
    var x = new DoesNotExist()
  } catch (e) {}
  alert("test b") // this will alert because the error is catched
}

alert("code is running")
a() 
b() // this will not execute as a() broke this script
// however pressing the button b will still alert in b() as it's in a new stack
alert("code finished")
<input onclick="a()" value="a" type="button" />
<input onclick="b()" value="b" type="button" />

关于Javascript 错误对浏览器的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34767622/

相关文章:

html - 出现在 div 中的元素不应该是 : HTML

html - 如何通过XPath选择以特定的子项开头的子项

html - 背景图像不会拉伸(stretch)整个页面宽度

javascript - 如何在拖放 JavaScript 中控制源 TD 样式?

javascript - 带有 highcharts 的 javascript 中的日期/时间问题

javascript - 如何使用 JavaScript 解析 &lt;script&gt; 中的内容?

javascript - 在 ini 文件中的 jasp 中设置 javascript 中的变量

html - 如何将 2 个独立的浮子放在一起?

javascript - 从网站获取 href 属性的完整列表

javascript - 使用 javascript 更新后替换 JSON 对象