有一些代码,一个同事在开发环境中实现了一段时间,我们从未对其进行测试和实施,但现在我们想要这样做。测试代码我在Ubuntu 12.04上使用Chrome v43或Firefox v37时没有任何问题,但是其他一些工作人员正在报告问题。
有些用户将标签/浏览器挂在页面上然后崩溃,有些用户没有任何问题,脚本按照预期工作,就像我一样。在某些机器上只有一个浏览器崩溃,而另一个浏览器正在运行。
我已多次阅读整个代码段,但我无法确定其中容易出现崩溃/挂断的内容。
这是Javascript:
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
$(document).ready(function(){
$('a').click(function(){
var address = $(this).attr("href");
if(address == "/twiki-dev/view/TWiki/WelcomeGuest?logout=1"){
eraseCookie("MOD_AUTH_CAS_S");
}
});
});
var allCookies = document.cookie.split(";");
var newHref = "";
for(i=0; i<allCookies.length; i++) {
var cookie = allCookies[i].split("=");
var redirect = 0;
if(cookie[0].trim() === "MOD_AUTH_CAS_S") {
var hrefSplit = document.URL.split("/");
for(i=0; i<hrefSplit.length; i++) {
if(hrefSplit[i]=="view") {
if("TWikiGuest"=="%WIKINAME%") {
redirect = 1;
};
hrefSplit[i]="viewauth";
}
if(i == hrefSplit.length-1) newHref = hrefSplit[i];
else newHref = hrefSplit[i] + "/";
}
if(redirect ==1) {
document.getElementsByTagName('body')[0].style.display = "none";
window.location.href = newHref;
}
}
}
这里是否存在导致问题的代码问题?
编辑:一位浏览器报告var hrefSplit = document.URL.split("/");
是罪魁祸首,但我看不出可能导致问题的原因?
答案 0 :(得分:1)
您正在使用相同的本地变量&#34; i&#34;在同一个循环里面。尝试将内部循环变量更改为&#34; j&#34;或者其他什么。