1

可能重复:
检测不支持 HTML5 <canvas> 的最佳方法

现在 $.browser正在从 jQuery中移除以支持 $.support,我将如何使用 jQuery 或纯 javascript 检测 IE8?

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

抱歉,HTML 不适用于我。所以我不能这样做:

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

具体来说,我希望使用 canvas 标签,而 IE8 不支持 canvas,但 jQuery.support 没有检测到 canvas 支持。

4

2 回答 2

8

改为测试该功能:

var el = document.createElement('canvas');
if (el.getContext && el.getContext('2d')) {
    // canvas supported 
}

编辑:

正如Brandon Boone在评论中建议的链接中所建议的那样,这是一个执行此操作的函数:

function isCanvasSupported(){
  var elem = document.createElement('canvas');
  return !!(elem.getContext && elem.getContext('2d'));
}
于 2012-07-06T21:41:04.117 回答
2

如果 jQuery 不能满足您的需求,我建议改用Modernizr进行特征检测。

当然,另一种选择是简单地坚持使用旧版本的 jQuery,之前$.browser已被弃用。它仍然像往常一样工作。没有人强迫您升级到最新版本。

最后,您声明您无法编辑 HTML,因此您无法使用条件注释。然而,值得指出的是,IE 也支持相当于条件注释的 Javascript。我假设您将能够使用此功能。

以下代码取自Wikipedia - 根据需要进行调整:

<script>
/*@cc_on

  @if (@_jscript_version == 10)
    document.write("You are using IE10");

  @elif (@_jscript_version == 9)
    document.write("You are using IE9");

  @elif (@_jscript_version == 5.8)
    document.write("You are using IE8");

  @elif (@_jscript_version == 5.7 && window.XMLHttpRequest)
    document.write("You are using IE7");

  @elif (@_jscript_version == 5.6 || (@_jscript_version == 5.7 && !window.XMLHttpRequest))
    document.write("You are using IE6");

  @elif (@_jscript_version == 5.5)
    document.write("You are using IE5.5");

  @else
    document.write("You are using IE5 or older");

  @end

@*/
</script>
于 2012-07-06T21:43:07.300 回答