网页上失败的javascript会导致所有其他脚本失败

Can failing javascript on a web page cause all other scripts to fail?

本文关键字:失败 其他 脚本 javascript 网页      更新时间:2023-09-26

我怀疑我们页面上的第三方分析脚本导致我们的Google Adwords转换脚本(页面稍后)无法运行,因为前面提到的分析无法加载外部资源。

在这种情况下,web浏览器的标准行为是什么?即使在单独的标记中,后续脚本也会失败运行吗?

如果有多个脚本标记,则每个标记都可能单独失败,而不会影响其他标记。

但是:

  • 如果某些执行的脚本修改了网页,这可能会导致其他脚本因您所做的更改而失败
  • 创建名称冲突的全局变量也可能会带来麻烦


编辑:Opera:测试

<html>
  <head>
    <script>=;</script>
    <script>alert("Hello!");</script>
  </head>
</html>

这个片段将创建一个错误:

Inline script compilation
Syntax error at line 1 while loading: expected expression, got '='

但它仍然会显示:

Hello!


EDIT²:所以,我上传了以下测试代码:

<html>
    <body id="content" bgColor="red">
        <script>?=;</script>
        <script>document.getElementById("content").bgColor = "green";</script>
    </body>
</html>

并通过Browsershots.org执行,这样我就可以在不打开快照的情况下看到结果;)

工作:

  • Firefox 1.5+(XP/Ubuntu/Debian/FreeBSD)
  • Galeon 2.0.6(Debian)
  • SeaMonkey 1.1.15+(Debian/Win 2008/XP)
  • Kazehakase 0.5.4(Debian/FreeBSD)
  • Iceape 1.1.13+(Debian)
  • Konqueror 3.5+(Debian/FreeBSD)
  • Opera 9.64+(FreeBSD)
  • 主显节2.22(FreeBSD)
  • Icewasel 3.5.16(Debian)
  • Chrome 1.0.154.59+(Debian/Win 2008)
  • MSIE 9.0+(赢得2008)
  • Flock 0.8+(Win 2000/2008/XP)
  • Lunascape 6.7(2003年获胜)
  • Camino 2.1.2(操作系统X 10)
  • Avant 8.02+(Win 2003/2008/XP)
  • iCab 5.0(操作系统X 10)
  • OmniWeb 622(操作系统X 10)
  • Safari 3.2.3+(操作系统X 10)
  • 不锈钢0.8(OS X 10)
  • Maxthon 3.4.2(赢8)
  • Navigator 9(XP)
  • Netscape 8.1.3(XP)

+意味着它在测试中包括的以下所有版本上都是成功的,下面列出的版本除外

不工作

  • Dillo 0.8.6;2.0;3.0.2(Debian)
  • Lynx 2.8.8(Gentoo):D
  • MSIE 4.01(XP)
  • MSIE 5.5;6.0;7.0;8.0(赢得2008)***
  • Chrome 18.0.1025.168(Ubuntu 12.04 LTE)
  • SeaMonkey 2.12(Ubuntu 12.04 LTE)

***窗口停止执行:

Syntax Error
Do you want to continue running scripts on this page?
[ Yes | No ]

在IE的某些版本中,我经常遇到JS错误,导致整个引擎停止加载任何进一步的源(在不同的文件中,因此在不同的标签中)。我没有具体的知识,但我认为这可能取决于浏览器和浏览器的设置。我的实际经验是,这种情况肯定会发生,并且修复指示的错误可以修复完全不相关的代码。