Javascript 使用jQuery 1.3+;检测IE8、IE7、Safari和FireFox;?

Javascript 使用jQuery 1.3+;检测IE8、IE7、Safari和FireFox;?,javascript,jquery,browser-detection,object-detection,Javascript,Jquery,Browser Detection,Object Detection,我需要根据每个浏览器更改一个值,因为它们的渲染方式都不同 if (navigator.appName == 'Netscape'){ top = 17; } var container = $('<div id="personPopupContainer">' + '<div id="personPopupContent">' + '</div>' + '</div>'); var pos = $(thi

我需要根据每个浏览器更改一个值,因为它们的渲染方式都不同

if (navigator.appName == 'Netscape'){
        top = 17;
}
var container = $('<div id="personPopupContainer">'
    + '<div id="personPopupContent">'
    + '</div>'
    + '</div>');

var pos = $(this).offset();
var width = $(this).width();
var reposition = { left: (pos.left - width) + 'px', top: pos.top + msg + 'px' };

container.css({
                    top: reposition.top
             });
这是可行的,但不幸的是Firefox和Safari都显示为“Netscape”

我将如何使用jQuery1.3.2来检测所有这些?我在
jquery.support下找不到任何信息,因为
jquery.browser
已经消失


谢谢

它们呈现的不同之处是什么?是否有一种方法可以使用而不是浏览器嗅探?当新浏览器出现时,它不太容易被破坏,而且更能容忍边缘。

它们呈现的不同之处是什么?是否有一种方法可以使用而不是浏览器嗅探?当新浏览器出现时,它不太容易被破坏,并且更能容忍边缘。

它们都以不同的方式呈现工具提示的顶级css值

if (navigator.appName == 'Netscape'){
        top = 17;
}
var container = $('<div id="personPopupContainer">'
    + '<div id="personPopupContent">'
    + '</div>'
    + '</div>');

var pos = $(this).offset();
var width = $(this).width();
var reposition = { left: (pos.left - width) + 'px', top: pos.top + msg + 'px' };

container.css({
                    top: reposition.top
             });
var容器=$(“”
+ ''
+ ''
+ '');
var pos=$(this.offset();
var width=$(this.width();
var resposition={left:(pos.left-width)+'px',top:pos.top+msg+'px'};
container.css({
顶部:重新定位。顶部
});

它们都以不同的方式呈现工具提示的顶部css值

if (navigator.appName == 'Netscape'){
        top = 17;
}
var container = $('<div id="personPopupContainer">'
    + '<div id="personPopupContent">'
    + '</div>'
    + '</div>');

var pos = $(this).offset();
var width = $(this).width();
var reposition = { left: (pos.left - width) + 'px', top: pos.top + msg + 'px' };

container.css({
                    top: reposition.top
             });
var容器=$(“”
+ ''
+ ''
+ '');
var pos=$(this.offset();
var width=$(this.width();
var resposition={left:(pos.left-width)+'px',top:pos.top+msg+'px'};
container.css({
顶部:重新定位。顶部
});

您是否或您是否考虑过使用将所有浏览器的默认值设置为零?如果不是,我建议你这样做,因为它可能会解决你目前的问题,以及潜在的未来问题


它可能会有帮助,因为它会将所有浏览器的基线设置为零,所以当您应用填充或定位时,它在所有浏览器中都应该具有相同的效果。

您是否考虑过使用它将所有浏览器的默认值设置为零?如果不是,我建议你这样做,因为它可能会解决你目前的问题,以及潜在的未来问题


它可能会有帮助,因为它会将所有浏览器设置为零基线,因此当您应用填充或定位时,它在所有浏览器中都应该具有相同的效果。

如果您必须进行浏览器检测(尽管存在警告),则是最新的(即使通过Chrome和iPhone)。

如果您必须进行浏览器检测(尽管有警告)是最新的(甚至通过Chrome和iPhone)。您可以使用该对象。在jQ 1.3中,该对象已被弃用,取而代之的是,但没有立即将其完全删除的计划,因此您应该是安全的

这就是说,使用浏览器嗅探虽然非常简单和诱人,但通常并不是最好的方法。因为听起来有些浏览器以不同的方式使用CSS会有问题,所以您可能想看看
jQuery.support.boxModel

您可以使用该对象。jQ 1.3中不推荐使用该对象,但没有立即计划将其全部移除,因此您应该是安全的


这就是说,使用浏览器嗅探虽然非常简单和诱人,但通常并不是最好的方法。因为听起来有些浏览器以不同的方式使用CSS有问题,你可能想看看
jQuery.support.boxModel

我遇到过一些奇怪的情况,功能检测对我没有帮助。其中一个是在Ope中ra,画布绘图中存在一个错误,导致flot中填充的图表在错误修复之前无法正确呈现。我想不出比检查Opera更好的方法,然后检查错误修复的版本。对于Opera的旧版本,我绘制了未填充的图表,这不太令人愉快,但至少不是buggy.@Nosredna功能检测并不是万灵药。它只是跨浏览器脚本编写的一种更明智的方法。问题是,当功能检测同样微不足道(或只是稍微复杂一点)时,人们使用浏览器嗅探为了实施,有效地射中自己的脚。显然,有些情况下检测是无助的(例如,纯粹的视觉差异)。我们的想法是理解浏览器嗅探的不可靠性和脆弱性,并谨慎、理解地应用它,而不是盲目地遵循某些规则。嘿,让Dan休息一下。这篇文章听起来对web开发相当无知,可能不知道什么是功能检测。我遇到过几个奇怪的案例,功能检测对我没有帮助。一个是在Opera中,画布绘图中有一个错误,导致flot中填充的图表在错误修复之前无法正确呈现。我想不出比检查Opera更好的方法,然后检查错误修复的版本。对于Opera的旧版本,我绘制了未填充的图表,这不太令人愉快,但至少至少不是bug。@Nosredna功能检测不是万能药。它只是跨浏览器脚本编写的一种更明智的方法。问题是,当功能检测同样微不足道(或者只是稍微复杂一点)时,人们使用浏览器嗅探为了实施,有效地射中自己的脚。显然,有些情况下检测是无助的(例如,纯粹的视觉差异)。我们的想法是理解浏览器嗅探的不可靠性和脆弱性,并谨慎、理解地应用它,而不是盲目地遵循某些规则。嘿,让Dan休息一下。这篇文章听起来对web开发相当无知,可能不知道什么是功能检测。详细阐述您的问题最好是对问题本身进行编辑。但是,如果你找到了答案,你可以回答自己的问题。人们可能会投票反对你。但是,我注意到你是新来的,你可能没有足够的信誉来编辑你的问题。你有“编辑”吗在你问题的底部链接到你的头像左侧?@Nosredna,我以为你可以编辑自己的帖子,不管你的声望有多低?我想这在我第一天就发生了。也许我只是不知道我在做什么。