[英]Do JavaScript problems break the browser?
我正在运行Google Website Optimizer,它正在执行客户端Cookie检查以仅显示一次内容。
但是,当它们被cookie捕获时,我得到了一个JavaScript错误,它不会SEEM致命,但是我已经读到1 js错误足以完全破坏Internet Explorer。
有问题的代码行是<script>utmx_section("Blah")</script>
此行直接由Google提供,但出现未定义的错误。 现在,它运行在页面的最底部,因此最坏的情况是GA无法运行。
但是危害是什么?
编辑:我不是直接要求调试我的JS,因为问题是深奥的,有可能是由于错误或错误的假设而导致的。 问题是忽略这个问题是否有害。
我得到的错误是:“未定义utmx_section”,即使正确提供了提供有问题的功能的JavaScript,并且它确实引发错误的页面与未引发错误的页面之间的唯一区别是:在页面上运行了一些额外的JQuery(由于条件检查cookie),因此不会引发错误。
进一步的编辑:通过使PHP有条件地仅在需要时(即,在未使用cookie的用户上)执行utmx行,解决了该问题。
要严格回答标题为“ JavaScript问题是否会破坏浏览器?”的问题,有些人会这样做。
考虑以下:
<script type="text/javascript">
function doSomething() {
//some stuff here
}
for (;;) {
doSomething();
}
</script>
并非所有浏览器都足够聪明,可以检测到此类问题。 这将使您的浏览器挂起,因此您必须在其进程上大放异彩。
较新的浏览器会检测到它并显示一条通知,让您可以杀死浏览器中的脚本,但是正如我所说,并不是所有人都足够聪明。
至于您的问题的主体,不确定<script>utmx_section("Blah")</script>
是什么。 您能否提供更多详细信息?
大多数用户关闭了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");
}
我不确定“当它们被饼干化时”是什么意思
但是,是的,一段JavaScript通常会导致进一步的javascript处理停止。
无论如何,您应该调试问题。 Google Analytics(分析)代码可在大量网站上使用,所以我猜您实际上在其他地方有问题。 无论是您如何复制代码,依赖项,还是正在过滤的某些内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.