使用jQuery 1.3+检测IE8,IE7,Safari,FireFox?

时间:2009-06-02 21:53:42

标签: javascript jquery browser-detection object-detection

我需要根据每个浏览器更改一个值,因为它们的呈现方式各不相同。

if (navigator.appName == 'Netscape'){
        top = 17;
}

这很有效但不幸的是Firefox和Safari都显示为“Netscape”

我如何使用jQuery 1.3.2来检测所有这些?现在jquery.support已经消失,我在jquery.browser下找不到任何信息。

谢谢!

5 个答案:

答案 0 :(得分:5)

如果您必须检测浏览器(尽管有针对它的警告),ppk's routine是最新的(即使通过Chrome和iPhone上传)。

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

它们的渲染方式有何不同?有没有办法可以使用capability detection而不是浏览器嗅探?当新的浏览器出现时,它不太容易破损,并且更容忍边缘。

答案 3 :(得分:1)

您可以使用jQuery.browser对象。它在jQ 1.3中被弃用而不是jQuery.support,但是没有立即计划完全删除它,所以你应该是安全的。

也就是说,使用浏览器嗅探虽然非常容易和诱人,但通常不是最好的做事方式。由于您觉得某些浏览器在使用CSS方面存在问题,因此您可能需要查看jQuery.support.boxModel

答案 4 :(得分:0)

它们都以不同的方式呈现工具提示的最高css值。

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
             });