【问题标题】:Javascript feature detect CMYK imagesJavascript 功能检测 CMYK 图像
【发布时间】:2012-11-17 02:34:10
【问题描述】:

众所周知,ie8 不支持 cmyk jpg 图像,它根本不渲染它们:-(

这里有一篇关于它的帖子http://www.plaveb.com/blog/cmyk-images-not-displayed-in-internet-explorer,还有无数其他的。

我的问题: 有没有一种方法可以从 javascript 中进行功能检测,类似于modernizr 的工作方式,以检查浏览器是否支持 cmyk jpg 图像?

我可以在我的 javascript 中添加一个 hack 来改变 ie8 使用 rgb jpg 的行为,但我希望这个 hack 更强大一些。

谢谢,

【问题讨论】:

  • 为什么不总是使用 RGB 图像?您正在屏幕上查看网站,对吗?如果您真的对打印大惊小怪,您可以在打印样式表(或类似的东西)中将您的图像换成 CMYK 图像...
  • 您使用任何服务器端语言,它们都应该具有执行此操作的功能。 ASP.NET - Bitmap API 和 PHP getImageSize 应该有通道数。
  • @ahren - 当您说始终使用 RBG 图像时,是因为浏览器无论如何都不会显示 cmyk 颜色吗?还是有其他原因?
  • @Dane:我可能没有很好地提出我的问题,你是对的,它很容易在图像中检测到它是 rgb 还是 cmyk,我想要的是一种检查浏览器是否的方法支持渲染 cmyk 图像。
  • 你不能使用指令来检查它是否是 IE 8 或更低版本,据我所知,它应该是唯一不支持 CMYK 的? (抱歉误读了问题)

标签: javascript internet-explorer-8 feature-detection cmyk


【解决方案1】:

类似这样的:(当然,使用 jQuery,它们是 HTML 指令)

if ($.browser.msie  && parseInt($.browser.version, 10) <= 8) {
  alert('IE8 or below'); 
} else {
  alert('Non IE8');
}

和 HTML ->

<!--[if IE 8]>
<script type="text/javascript">
    ie = 8;
</script>
<![endif]-->

好的,这里是一些Javascript,它适用于RGBA,所以它应该适用于CMYK,你可以测试:

<html>
<head>
    <script>
    var IS_CMYK_SUPPORTED = (function(){
        var value = 'cmyk(1%,1%,1%,0.5%)',
        el = document.createElement('p'),
        result = false;
        try {
            el.style.color = value;
            result = /^cmyk/.test(el.style.color);
        } catch(e) { }
        el = null;
        return result;
    })();
    </script>
</head>
<body onLoad='alert("IS CMYK Supported:" + IS_CMYK_SUPPORTED)'>
</body>
</html>

【讨论】:

  • 我想看看是否有其他方法可以做到这一点,而不仅仅是检查 ie8
  • 浏览器嗅探存在严重缺陷,条件 cmets 可能是最好的方法,因为您还可以使用它们插入替代样式表以提供支持的图像。
  • 这看起来可行 :) 在我的 Mac 上针对 Chrome 运行它未能为我的 html 元素创建“假”颜色,而在 Safari 中它返回 true :)
猜你喜欢
  • 2013-07-31
  • 2011-05-01
  • 2014-06-15
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
  • 2015-12-15
  • 1970-01-01
相关资源
最近更新 更多