【问题标题】:Does ob_gzhandler correctly determine buggy Internet Explorer versions?ob_gzhandler 是否正确确定有缺陷的 Internet Explorer 版本?
【发布时间】:2009-05-13 08:43:54
【问题描述】:

我似乎无法在任何地方找到答案。众所周知,某些版本的 IE6 和更早版本错误地声明它们接受 gzip 编码。 ob_gzhandler 是否正确检测到这些版本,还是需要单独检测?

【问题讨论】:

    标签: php internet-explorer gzip cross-browser


    【解决方案1】:

    不,它没有;你必须像这样:

    <?
    function checkIEFail() {
        $ua = $_SERVER['HTTP_USER_AGENT'];
        if(strpos($ua, 'Mozilla/4.0 (compatible; MSIE ') !== 0 || strpos($ua, 'Opera') !== false)
            return false;
        $version = floatval(substr($ua, 30));
        return $version < 6 || ($version == 6 && strpos($ua, 'SV1') === false);
    }
    
    if(!checkIEFail())
        ob_start('ob_gzhandler');
    ?>
    

    【讨论】:

    • !== 0!== false 的使用让我困惑了几分钟!这不是最易读的代码,但我很确定它可以工作。知道有多少百分比的浏览器会匹配这个测试吗?我想知道它是否足够低以至于不再支持它?
    • IE6 仍然拥有 7.1% 的市场份额,如果您正在做 srs bzns,这将是 很多 人,否则可能可以忽略不计。不知道其中有多少有和没有 SV1。
    猜你喜欢
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2015-01-30
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多