Javascript 为不同的浏览器使用不同的样式表?

Javascript 为不同的浏览器使用不同的样式表?,javascript,jquery,css,Javascript,Jquery,Css,到目前为止,我使用这个JS加载一个不同的样式表,如果其中一个是指定的浏览器。但目前,这对我不起作用。它不显示任何样式表。我找不出有什么问题 <script type="text/javascript"> if ( $.browser.mozilla == true ) { document.write("<link type=\"text/css\" rel=\"stylesheet\" href=\"css\FF.css\">"); } </script>

到目前为止,我使用这个JS加载一个不同的样式表,如果其中一个是指定的浏览器。但目前,这对我不起作用。它不显示任何样式表。我找不出有什么问题

<script type="text/javascript">
if ( $.browser.mozilla == true ) {
  document.write("<link type=\"text/css\" rel=\"stylesheet\" href=\"css\FF.css\">");
}
</script>
<script type="text/javascript">
if ( $.browser.chrome == true ) {
  document.write("<link type=\"text/css\" rel=\"stylesheet\" href=\"css\Chrome.css\">");
}
</script>

if($.browser.mozilla==true){
文件。填写(“”);
}
如果($.browser.chrome==true){
文件。填写(“”);
}

此功能已在jQuery 1.9中删除:


在此页面上,建议此库获取此功能:

上面的评论是正确的,这不再是JQuery函数

正如您所说,您这样做是因为内容看起来不同,请尝试使用以下工具:

  • -将允许您根据哪些元素工作而不是您所在的浏览器来设置样式
  • -将有助于标准化元素的默认样式
  • -有效的代码更有可能在所有浏览器中工作
如果做不到这一点,请在这里问一个特定的问题(最好使用JSFIDLE)——css很少不能在所有新浏览器上工作,或者一个简单的解决方法不可能


另外:现在几乎不可能在所有浏览器中进行测试,因为浏览器太多了,所以知道一个脚本可以在您测试过的所有浏览器上运行应该会让您相信它可以在您未测试过的浏览器上运行。

在Chrome&Firefox上测试的纯javascript版本。我应该在歌剧院工作。过去在你的网页上你想要的地方。最好是在底部之前

document.addEventListener("DOMContentLoaded",browsercss);

function browsercss() {
    navigator.sayswho = function () {
        var c = navigator.userAgent,
            b, a = c.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
        if (/trident/i.test(a[1])) return b = /\brv[ :]+(\d+)/g.exec(c) || [], "IE " + (b[1] || "");
        if ("Chrome" === a[1] && (b = c.match(/\bOPR\/(\d+)/), null != b)) return "Opera " + b[1];
        a = a[2] ? [a[1], a[2]] : [navigator.appName, navigator.appVersion, "-?"];
        null != (b = c.match(/version\/(\d+)/i)) && a.splice(1, 1, b[1]);
        return a.join(" ")
    }();
    var stylesheet = "";

    if (navigator.sayswho.indexOf('Chrome') >= 0) {
        stylesheet = 'http://example.com/chrome.css';
    }
    if (navigator.sayswho.indexOf('Mozilla') >= 0) {
        stylesheet = 'http://example.com/mozilla.css';
    }
    if (navigator.sayswho.indexOf('Opera') >= 0) {
        stylesheet = 'http://example.com/mozilla.css';
    }

    loadcss = document.createElement('link');
    loadcss.setAttribute("rel", "stylesheet");
    loadcss.setAttribute("type", "text/css");
    loadcss.setAttribute("href", stylesheet);

    document.getElementsByTagName("head")[0].appendChild(loadcss);
}

您可以使用JavaScript检测和更改不同浏览器的css,但代码有点笨重

使用链接


可能是因为
$.browser
被弃用(在jQuery 1.3中?)并从jQuery中删除(在1.9中),您使用的是什么版本?你为什么要这样做呢?通常情况下,不需要为Firefox和Chrome加载不同的样式表。我这样做是因为css需要不同,否则内容看起来就不对了。出于可维护性原因,基于浏览器存储样式表是个坏主意。据我所知,如果你在firefox中做了一些工作,它肯定会在chrome中工作。。。但IE需要一些努力是的,但不是我希望它在firefox中的外观。与其单独设计每个浏览器的样式(但嘿,这是你的工作量和维护噩梦,不是我的…),你是否尝试过使用CSS样式表将所有元素设置为通用默认值,这应该是Firefox/Chrome区别的主要原因。我会把它放在index.html的开头,然后再放在样式表链接之前吗?是的,因为“append”会将链接添加到head标记的底部;)必须在JQuery之后包含…我可以为包含自己制作香草。这是行不通的,几乎所有已知的浏览器都有一个用户代理,比如
Mozilla/5.0(Windows某物)浏览器(比如Gecko/Chrome)
等等。所以您可以匹配所有内容。我正在解决这个问题,感谢tip adeneo和refulat exp。我已经测试了它,但它不起作用。我应该更改“+样式表+”吗?另外,我猜我删除了链接标记,因为附加将根据浏览器自动加载?