如何调试浏览器挂起链接到另一个页面的原因?

时间:2014-01-22 18:08:29

标签: javascript html

以下是用户点击的div:

<div id="generate2_pos" onclick="damperdesign_payload();" class="button">Generate P-Spectra</div>

这会调用damperdesign_payload()函数将其链接到另一个页面。当发生这种情况时,它会挂起。我确信它只挂在链接上,因为我走过了damperdesign_payload函数。

因此,例如在重定向页面之前的该函数的最后一次if / else检查中:

if((typeof sessvars.dampertype === 'undefined') || (sessvars.dampertype == "")){
    alert("You haven't selected damper type.");
 }
else{
    //This is where it reaches, after which my page hangs.
document.location.href='spectra.html';
 }

在大多数情况下,第一次,下一页(spectra.html)将正常工作。在网站周期结束时,当我不断在程序中反复访问我们正在讨论的页面,然后再次单击该div时,它会挂起。

这是否必须在spectra.html中执行一些代码?如果是这样,如果页面在两个页面之间挂起,我该如何调试呢?

3 个答案:

答案 0 :(得分:1)

它挂起,因为while(1) { }是一个无限循环......

答案 1 :(得分:1)

首先,从代码中删除while(1) {}循环。这是一种可怕的调试方式,并没有帮助你,只是让事情变得混乱。

第二关,改变:

document.location.href = 'spectra.html';

window.location.href = 'spectra.html';

因为window是您实际应该使用的位置对象(有关原因的信息,请参阅here。)

然后,您需要使用相关的console.log()语句来填充代码,这样,当它挂起时(听起来只是间歇性地),您可以尝试收集有关正在发生的事情的线索。众所周知,间歇性和时序敏感的问题很难调试,因为您经常无法使用正常的断点并单步执行代码来查看导致问题的原因。所以,相反,你需要丢弃一大堆面包屑,然后当问题出现时,你看看面包屑告诉你的是什么,试着找到问题发生在哪里或者可能是什么的一些线索然后经常引导你添加更多面包屑信息,直到最终缩小导致问题的原因。

我建议您在更改页面的函数和console.log("some unique string here")页面的初始化代码中慷慨地添加spectra.html语句,以便您可以尝试确切地知道它之前的距离挂。

此外,您还应该能够使用Chrome调试器中的网络标签查看是否因为开始加载spectra.html或是否尚未开始加载而加载某些资源{1}}。

答案 2 :(得分:0)

浏览器中应该提供的开发人员工具(firefox或chrome)可以更好地了解造成问题的原因