jQuery浏览器检测不需要';我好像不工作

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')+' #

由于IE无法淡出透明的PNG,我决定改变我的功能,如果用户使用IE,只显示PNG,如果用户使用任何其他浏览器,则淡出PNG。下面的函数在IE中运行良好,达到了我的预期效果,但在任何其他浏览器(如Firefox、Safari)中,它都不起任何作用,我是否遗漏了什么,或者我是否有语法错误

    $('#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中工作,然后加载外部内容,那么你是说我应该把我的函数从条件语句中去掉,把不同的条件放在每个函数中,以确定函数的功能是什么?这是一种方法,是的。你是说我应该把我的函数从条件语句中去掉,把不同的条件放在每个函数中,以确定函数的功能是什么?这是一种方法,是的。或者,请参阅添加的备选方案。