首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS目标Safari 8

CSS目标Safari 8
EN

Stack Overflow用户
提问于 2016-01-22 00:53:01
回答 2查看 809关注 0票数 0

当我在我的网络上做一些优化时,我遇到了Safari的一些麻烦。

我有一些CSS命令,这些命令在Safari 8(可能不支持?)、Safari 9和所有其他浏览器上都被破坏了。

我希望修复safari 8的代码,而不需要使用不同(以及更复杂)的结构来实现相同的输出。

所以:这是一种瞄准目标的方法!只有!狩猎版本8?

目标可能是-

  • 作为html中的注释,类似于"if IE7“的旧注释。
  • 就像在CSS中一样(但是-webkit以所有webkit浏览器为目标,而不仅仅是safari)
  • 如javascript/jquery所示

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-22 01:35:44

有很多不同的方法可以解决这个问题。如果要插入样式表,可以使用以下代码:

代码语言:javascript
复制
var ua='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A';
var verRe = /Version\/(\d+)/;
var version = ua.match(verRe);
var safari = ua.indexOf("Safari");

if (safari !== -1) {
    if (version[1] <= 8) {
        addStyleTag("safari8.css");
    }
}

function addStyleTag(url) {
    var link,head;
    head = document.querySelector("head");
    link = document.createElement("link");
    link.setAttribute("href",url);
    link.setAttribute("type","text/css");
    link.setAttribute("rel","stylesheet");
    head.appendChild(link);
}

如果是我的页面,我会编写代码,以便在Safari上优雅地降级。

票数 0
EN

Stack Overflow用户

发布于 2016-01-22 01:31:01

您可以使用浏览器检测,并将类添加或不添加(取决于浏览器)到body (例如,<body class="is-safari-8">)。在您的CSS中,您可以设置仅适用于.is-safari-8及其后代的特定规则。

浏览器检测本身可以在服务器端或客户端完成。虽然服务器端可能更好,但我假设您打算在客户端这样做。为此,您可以使用一个库(您应该通过快速的google搜索找到几个库,但由于您只需要寻找一个特定的情况),这可能会有些过分),或者编写您自己的脚本来检查用户代理。

这里有一个有用的源代码,您应该可以开始使用它:https://developer.mozilla.org/en/docs/Web/API/Navigator

在sidenote上:用户代理可以是伪造的(但这可能不是一个问题)。

更重要的是:您可能需要查找https://modernizr.com/。这是一个特征检测脚本。它可以让你以更灵活的方式解决你的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34937194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档