我有这样的代码:
$(document).ready(function() {
$("div #covert, div #coverb").height($(window).height() / 2 + 1);
$(window).resize(function() {
$("div #covert, div #coverb").height($(window).height() / 2 + 1);
covconcr();
});
function covconcr() {
$('div #covercon').css('left', $(window).width() / 2 - $('#covercon').width() / 2);
}
covconcr();
function hidecover() {
var goup = $('div #covert').height();
}
$("div #covercon").fadeOut("fast").fadeIn("fast").fadeOut("fast").fadeIn("fast").fadeOut("fast").fadeIn("fast").fadeOut("fast").fadeIn("fast").fadeOut("fast").delay(100).fadeIn("fast", function() {
$(this).stop();
});
$('title').html('Drink86_browser.detection');
var logoop;
jQuery.each(jQuery.browser, function() {
if ($.browser.msie) {
$('div #covercon').delay(3000, function() {
$(this).html("YOUR BROWSER IS: INTERNET EXPLORER.");
$('title').html('Drink86_your.browser.is.internet.explorer');
});
}
else if (!$.browser.msie) {
function update() {
//$('#site').load('site.php');
$('div #covercon').html("YOUR BROWSER IS: " + jQuery.uaMatch(navigator.userAgent).browser + ".");
covconcr();
$('title').html('Drink86_your.browser.is.' + jQuery.uaMatch(navigator.userAgent).browser + ' ');
function hidecov() {
$('title').html('Drink86_loading_files');
$('#covercon').html($('#loading').html());
covconcr();
var timer = setInterval(function() {
$("#loadingpro").html(Math.round($("#progress").width() / 4) + "%");
}, 20);
$("#progress").animate({
width: 400
}, 2000, function() {
$('title').html('Drink86_');
clearInterval(timer);
$('#covercon').delay(700).fadeOut('fast', function() {
// if(logoop!="yes"){
$('#logobig').css('left', $(window).width() / 2 - $('#logobig').width() / 2).css('top', $(window).height() / 2 - $('#logobig').height() / 2);
$('#logobig').fadeIn(3000).delay(2500).fadeOut(3000);
logoop = "yes";
// }
});
});
}
setTimeout(hidecov, 1000);
}
setTimeout(update, 3100);
}
});
});
#logobig
(fadeIn
和fadeOut
)的操作会执行两次。
为什么?
我之前的问题与之类似,但后来他们只在Firefox中执行了两次。
任何想法为什么?
答案 0 :(得分:4)
你到底在想什么?
jQuery.each(jQuery.browser, function() { ...
这真的没有意义。只需看看jQuery.browser
(如果必须的话)。
另外,在“if”语句中检查它是否是IE,然后如果它不是“else”部分中的IE,那么,再次......
你问题的直接答案是jQuery.browser
可能有两件事,所以你做了两次。
答案 1 :(得分:4)
我认为你的问题是你正在迭代jQuery的浏览器标志集合,这对于完成你正在做的事情来说并不是必需的。如果你在Firefox中查看页面,if / elseif的第二个子句将在每个循环上执行,因为值永远不会改变。尝试从每个循环中删除该函数,以便它看起来像这样:
if ($.browser.msie) {
$('div #covercon').delay(3000, function() {
$(this).html("YOUR BROWSER IS: INTERNET EXPLORER.");
$('title').html('Drink86_your.browser.is.internet.explorer');
});
} else if (!$.browser.msie) {
function update() {
//$('#site').load('site.php');
$('div #covercon').html("YOUR BROWSER IS: " + jQuery.uaMatch(navigator.userAgent).browser + ".");
covconcr();
$('title').html('Drink86_your.browser.is.' + jQuery.uaMatch(navigator.userAgent).browser + ' ');
function hidecov() {
$('title').html('Drink86_loading_files');
$('#covercon').html($('#loading').html());
covconcr();
var timer = setInterval(function() {
$("#loadingpro").html(Math.round($("#progress").width() / 4) + "%");
}, 20);
$("#progress").animate({
width: 400
}, 2000, function() {
$('title').html('Drink86_');
clearInterval(timer);
$('#covercon').delay(700).fadeOut('fast', function() {
// if(logoop!="yes"){
$('#logobig').css('left', $(window).width() / 2 - $('#logobig').width() / 2).css('top', $(window).height() / 2 - $('#logobig').height() / 2);
$('#logobig').fadeIn(3000).delay(2500).fadeOut(3000);
logoop = "yes";
// }
});
});
}
setTimeout(hidecov, 1000);
}
setTimeout(update, 3100);
}
答案 2 :(得分:2)
jQuery.each(jQuery.browser
不要遍历“浏览器”对象中的每个项目。我怀疑还有不止一个!$。browser.msie
答案 3 :(得分:1)
您在setTimeout(hidecov, 1000)
内召唤update()
,然后在更新之外召唤setTimeOut(update, 3100)
,以便在1000毫秒后调用hidecov
一次,然后调用update
在3100毫秒,在那里它将在1000毫秒内在setTimeout
上执行另一个hidecov
。
我不确定所有这些代码是如何尝试的,所以我无法告诉您如何更改它,但我可以看到为什么hidecov
被调用两次。
答案 4 :(得分:0)
我对Javascript不是最好的,所以我可能完全没有这个,但看起来hidecov可以在调用更新时运行,然后在1秒后再次运行。
在hidecov中使用带有断点的firebug应指向何时运行。