0

我正在运行 Google 网站优化器,它执行客户端 cookie 检查以仅显示一次内容。

但是,当它们被 cookie 时,我得到一个看起来并不致命的 javascript 错误,但我读过 1 个 js 错误足以完全破坏 Internet Explorer。

有问题的代码行是 <script>utmx_section("Blah")</script>

此行由 Google 直接提供,但我收到未定义的错误。现在,它运行在页面的最底部,所以最坏的情况是 GA 没有运行。

但是有什么危害呢?


编辑:我没有直接要求调试我的 JS,因为问题很深奥,可能是由于错误或错误的假设造成的。问题是忽视这个问题是否危险。

我得到的错误是:“utmx_section 未定义”,即使正确包含了提供相关函数的 JavaScript,并且它确实引发错误的页面与没有引发错误的页面之间的唯一区别是在不引发错误的页面上运行了一些额外的 JQuery(由于检查 cookie 的条件)。

进一步编辑:通过让 PHP 有条件地仅在需要时执行 utmx 行(即,在未使用 cookie 的用户上)来解决问题。

4

3 回答 3

2

为了严格回答标题“JavaScript 问题会破坏浏览器吗?”中的问题,有些人会这样做。

考虑以下:

<script type="text/javascript">
  function doSomething() {
     //some stuff here
  }      
  for (;;) {
    doSomething();
  }

</script>

并非所有浏览器都足够智能以检测此类问题。这将挂起您的浏览器,因此您必须在其过程中采取杀手锏。

较新的浏览器会检测到它并显示一条通知,允许您终止浏览器中的脚本,但正如我所说,并非所有浏览器都足够聪明。

至于你的问题的主体,不确定问题<script>utmx_section("Blah")</script>是什么。你能提供更多细节吗?

于 2010-06-22T13:55:55.623 回答
2

大多数用户都关闭了 JavaScript 通知,因此他们不会看到错误。在您的情况下,该错误不会“破坏浏览器”;它确实中断的是对该函数的后续调用以及该脚本块中该调用之后的任何代码:

utmx_section("Blah");
// later:
utmx_section("Correct"); <-- will not fire

和:

utmx_section("Blah"); 
var a = b; <-- will not fire
doStuff(); <-- will not fire

在 PHP 中解决这个问题是很困难的。只需添加一个条件。在查看是否存在全局变量时,您必须使用“窗口”:

if(window.utmx_section){
    utmx_section("Blah");
}
于 2010-06-22T18:01:07.783 回答
0

我不完全确定“当它们被 cookie 时”是什么意思
但是,是的,一段 javascript 通常会导致进一步的 javascript 处理停止。

无论如何,您应该调试问题。谷歌分析代码适用于大量网站,所以我猜你实际上在其他地方遇到了问题。无论是您复制代码、依赖项的方式,还是您的一些正在过滤的代码、依赖项。

于 2010-06-22T13:55:29.160 回答