1

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

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

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

我将如何使用 jQuery 1.3.2 来检测所有这些?jquery.support现在我找不到任何信息jquery.browser了。

谢谢!

4

5 回答 5

5

如果您必须进行浏览器检测(尽管有警告),ppk 的例程是最新的(甚至通过 Chrome 和 iPhone)。

于 2009-06-02T22:43:30.567 回答
4

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

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

于 2009-06-02T22:17:38.853 回答
2

他们有什么不同的渲染?有没有办法可以使用功能检测而不是浏览器嗅探?当新的浏览器出现时,它更不容易损坏,并且更能容忍边缘。

于 2009-06-02T21:57:17.913 回答
1

you can use the jQuery.browser object. It's deprecated in jQ 1.3 in favour of the jQuery.support, but there's no immediate plans to remove it altogether, so you should be safe.

That said, using browser sniffing, while very easy and tempting, isn't usually the best way to do things. Since it sounds like you're having problems with some browsers doing CSS differently, you might want to look at jQuery.support.boxModel.

于 2009-06-02T22:48:09.510 回答
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
             });
于 2009-06-02T22:03:42.987 回答