jQuery浏览器检测不需要';我好像不工作
由于IE无法淡出透明的PNG,我决定改变我的功能,如果用户使用IE,只显示PNG,如果用户使用任何其他浏览器,则淡出PNG。下面的函数在IE中运行良好,达到了我的预期效果,但在任何其他浏览器(如Firefox、Safari)中,它都不起任何作用,我是否遗漏了什么,或者我是否有语法错误jQuery浏览器检测不需要';我好像不工作,jquery,internet-explorer,browser-detection,Jquery,Internet Explorer,Browser Detection,由于IE无法淡出透明的PNG,我决定改变我的功能,如果用户使用IE,只显示PNG,如果用户使用任何其他浏览器,则淡出PNG。下面的函数在IE中运行良好,达到了我的预期效果,但在任何其他浏览器(如Firefox、Safari)中,它都不起任何作用,我是否遗漏了什么,或者我是否有语法错误 $('#content2 a').click(function(){ if($.browser.msie){ var toLoad = $(this).attr('href')+' #
$('#content2 a').click(function(){
if($.browser.msie){
var toLoad = $(this).attr('href')+' #content';
$('#content').show(loadContent);
window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);
function loadContent() {
$('#content').load(toLoad,'',showNewContent())
}
function showNewContent() {
$('#content').show();
}
return false;
}else{
var toLoad = $(this).attr('href')+' #content';
$('#content').fadeOut('slow',loadContent);
$('#load').remove();
$('#wrapper').append('<span id="load">LOADING...</span>');
$('#load').fadeIn('slow');
window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);
function loadContent() {
$('#content').load(toLoad,'',showNewContent())
}
function showNewContent() {
$('#content').fadeIn('slow',hideLoader());
}
function hideLoader() {
$('#load').fadeOut('slow');
}
return false;
};
});
$('#content2 a')。单击(函数(){
如果($.browser.msie){
var toLoad=$(this.attr('href')+'#content';
$('#content').show(loadContent);
window.location.hash=$(this.attr('href').substr(0,$(this.attr('href').length-5);
函数loadContent(){
$('#content').load(toLoad',showNewContent())
}
函数showNewContent(){
$(“#内容”).show();
}
返回false;
}否则{
var toLoad=$(this.attr('href')+'#content';
$(“#内容”).fadeOut('slow',loadContent);
$(“#加载”).remove();
$(“#包装器”).append('LOADING…');
$('加载').fadeIn('慢速');
window.location.hash=$(this.attr('href').substr(0,$(this.attr('href').length-5);
函数loadContent(){
$('#content').load(toLoad',showNewContent())
}
函数showNewContent(){
$('content').fadeIn('slow',hideLoader());
}
函数hideLoader(){
$('加载').fadeOut('缓慢');
}
返回false;
};
});
也许您应该添加“;”在该行的末尾:
$('#content').load(toLoad,'',showNewContent());
在
loadContent()
的两个定义中,也许您应该添加“;”在该行的末尾:
$('#content').load(toLoad,'',showNewContent());
在
loadContent()
的两个定义中,大多数回调都是这样编写的:
$('#content').load(toLoad,'',showNewContent())
这表示调用showNewContent,并将其返回值传递给jQuery
你的意思是:
$('#content').load(toLoad, '', showNewContent);
但这里也有一个潜在的问题:
}else{
...
$('#content').fadeOut('slow',loadContent);
...
function loadContent() {
实际上,将函数
语句放在else
或其他函数以外的任何块中是不合法的。这是因为function
语句的神奇之处在于,它允许您在上面的代码中使用一个函数,只有在函数开始运行之前函数定义已修复的情况下,才可以定义它。如果定义位于条件块内,则不会发生这种情况
与JavaScript一样,浏览器不会告诉您错误,而是让您侥幸逃脱,但结果不一致且怪异。这是一个明显矛盾的测试案例:
x();
var isgood= Math.random()*2>=1;
if (isgood) {
function x() {
alert('Good!');
}
} else {
function x() {
alert('Bad!');
}
}
此示例代码尝试调用一个函数,该函数依赖于事件实际发生之前的抛硬币结果。这么说应该是语法错误,但每个浏览器都允许这样做。Mozilla至少让x
保持undefined
,直到到达函数语句,这样初始x()
将导致错误。然而,在IE、Webkit和Opera中,第二个函数
语句“赢了”,它总是警告“坏!”。糟糕的浏览器
在需要定义发生更改的函数时,使用内联函数表达式而不是函数语句来避免此问题。虽然在这种情况下,您可以通过使用IE的速度0来避免衰落问题,使其立即回调,这使整个过程更加简单:
$('#content2 a').click(function() {
var speed= $.browser.msie? 0 : 'slow';
$('#content').fadeOut(speed, function() {
$('#content').load($(this).attr('href')+' #content', '', function() {
$('#content').fadeIn(speed);
});
});
});
大多数回调都是这样写的:
$('#content').load(toLoad,'',showNewContent())
这表示调用showNewContent,并将其返回值传递给jQuery
你的意思是:
$('#content').load(toLoad, '', showNewContent);
但这里也有一个潜在的问题:
}else{
...
$('#content').fadeOut('slow',loadContent);
...
function loadContent() {
实际上,将函数
语句放在else
或其他函数以外的任何块中是不合法的。这是因为function
语句的神奇之处在于,它允许您在上面的代码中使用一个函数,只有在函数开始运行之前函数定义已修复的情况下,才可以定义它。如果定义位于条件块内,则不会发生这种情况
与JavaScript一样,浏览器不会告诉您错误,而是让您侥幸逃脱,但结果不一致且怪异。这是一个明显矛盾的测试案例:
x();
var isgood= Math.random()*2>=1;
if (isgood) {
function x() {
alert('Good!');
}
} else {
function x() {
alert('Bad!');
}
}
此示例代码尝试调用一个函数,该函数依赖于事件实际发生之前的抛硬币结果。这么说应该是语法错误,但每个浏览器都允许这样做。Mozilla至少让x
保持undefined
,直到到达函数语句,这样初始x()
将导致错误。然而,在IE、Webkit和Opera中,第二个函数
语句“赢了”,它总是警告“坏!”。糟糕的浏览器
在需要定义发生更改的函数时,使用内联函数表达式而不是函数语句来避免此问题。虽然在这种情况下,您可以通过使用IE的速度0来避免衰落问题,使其立即回调,这使整个过程更加简单:
$('#content2 a').click(function() {
var speed= $.browser.msie? 0 : 'slow';
$('#content').fadeOut(speed, function() {
$('#content').load($(this).attr('href')+' #content', '', function() {
$('#content').fadeIn(speed);
});
});
});
你确定调用了else函数吗?是的,因为它在IE中工作,并加载外部内容。你确定调用了else函数吗?是的,因为它在IE中工作,然后加载外部内容,那么你是说我应该把我的函数从条件语句中去掉,把不同的条件放在每个函数中,以确定函数的功能是什么?这是一种方法,是的。你是说我应该把我的函数从条件语句中去掉,把不同的条件放在每个函数中,以确定函数的功能是什么?这是一种方法,是的。或者,请参阅添加的备选方案。