jquery - 关于跨浏览器技巧

标签 jquery cross-browser

我有一个很棒的 jQuery plugin它允许您将浏览器特定的 CSS 插入样式表中。

示例:

#foo {width: 100%; border: 12px solid white}
.opera #foo {width: 99%; border: 12px solid red}
.gecko #foo {width: 33%; border: 12px solid blue}

...你明白了。

问题:

是否有类似的东西可用于插入特定于浏览器的 jQuery 片段,甚至特定于浏览器的 HTML?例如(伪代码):IF opera、fadeIn div#opera、IF webkit fadeIn div#webkit 等

我正在尝试弄清楚如何制作一个仅适用于 Opera 的弹出窗口,以及另一个仅适用于 Webkit 等的弹出窗口。

基本上,发布任何有助于针对特定浏览器的内容,因为我想了解我需要知道的所有内容。我正在寻找有助于简化跨浏览器任务的插件,而且我不太关心旧版浏览器。

更新:

这是我正在使用的插件:

function css_browser_selector(u) {
var ua = u.toLowerCase(),
    is = function (t) {
        return ua.indexOf(t) > -1
    }, g = 'gecko',
    w = 'webkit',
    s = 'safari',
    o = 'opera',
    m = 'mobile',
    h = document.documentElement,
    b = [(!(/opera|webtv/i.test(ua)) && /msie\s(\d)/.test(ua)) ? ('ie ie' + RegExp.$1) : is('firefox/2') ? g + ' ff2' : is('firefox/3.5') ? g + ' ff3 ff3_5' : is('firefox/3.6') ? g + ' ff3 ff3_6' : is('firefox/3') ? g + ' ff3' : is('gecko/') ? g : is('opera') ? o + (/version\/(\d+)/.test(ua) ? ' ' + o + RegExp.$1 : (/opera(\s|\/)(\d+)/.test(ua) ? ' ' + o + RegExp.$2 : '')) : is('konqueror') ? 'konqueror' : is('blackberry') ? m + ' blackberry' : is('android') ? m + ' android' : is('chrome') ? w + ' chrome' : is('iron') ? w + ' iron' : is('applewebkit/') ? w + ' ' + s + (/version\/(\d+)/.test(ua) ? ' ' + s + RegExp.$1 : '') : is('mozilla/') ? g : '', is('j2me') ? m + ' j2me' : is('iphone') ? m + ' iphone' : is('ipod') ? m + ' ipod' : is('ipad') ? m + ' ipad' : is('mac') ? 'mac' : is('darwin') ? 'mac' : is('webtv') ? 'webtv' : is('win') ? 'win' + (is('windows nt 6.0') ? ' vista' : '') : is('freebsd') ? 'freebsd' : (is('x11') || is('linux')) ? 'linux' : '', 'js'];
c = b.join(' ');
h.className += ' ' + c;
return c;
};
css_browser_selector(navigator.userAgent);

最佳答案

这个插件所做的似乎只是将几个类附加到 html 标记中。要使用 jQuery 测试它们,您可以这样做

$html = $("html"); //cached for performance reasons
...

if( $html.is(".gecko") ){
  ...

。更好的是,看看插件是否还设置了一些可以直接使用的全局(或从全局范围可见)变量。很可能是这样。

此外,当您想知道浏览器可以做什么时,请不要查看浏览器是什么。功能检测,而不是浏览器检测(除非无法可靠地检测到该功能,如 DCoder 所指出的)。 Modernizr库可以用于此目的。

关于jquery - 关于跨浏览器技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13549524/

相关文章:

javascript - 获取屏幕、当前网页和浏览器窗口的大小

javascript - 当请求不是来自链接时,IE 上的 Document.referrer 问题

javascript - 从 Ext JS 面板渲染 Kendo 菜单

reactjs - 我们是否需要对 React 应用程序进行跨浏览器测试

javascript - 如何判断给定浏览器是否支持 JavaScript 语言功能

javascript - 如何使用类名获取最近的 td 的值

html - 粘性页脚未放置在底部

javascript - 如何使用按钮再次附加同一个表以及如何在另一个表中对表的数据进行行

javascript - 如何验证输入日期 html 年份?

javascript - 输入类型=提交在 div 内时不触发?