在最新版本的WordPress中,页面的一部分包含以下代码:
<!--[if lte IE 8]>
<script type="text/javascript">
document.body.className = document.body.className.replace( /(^|\s)(no-)?customize-support(?=\s|$)/, '' ) + ' no-customize-support';
</script>
<![endif]-->
<!--[if gte IE 9]><!-->
<script type="text/javascript">
(function() {
var request, b = document.body, c = 'className', cs = 'customize-support', rcs = new RegExp('(^|\\s+)(no-)?'+cs+'(\\s+|$)');
request = true;
b[c] = b[c].replace( rcs, ' ' );
b[c] += ( window.postMessage && request ? ' ' : ' no-' ) + cs;
}());
</script>
<!--<![endif]-->
我的问题是:为什么IE9评论有一个额外的<!-->
,但是IE8评论没有?{两个if条件之间有什么区别?我有a PHP-based HTML Minifier脚本,我正在调试,我需要知道额外片段的含义,以使解析器准确。
答案 0 :(得分:1)
研究如何在您的问题中突出显示代码。请注意,IE9部分是正常突出显示的,而不是像IE8部分那样的巨大注释。
这是非IE浏览器以及IE9及以后的IE9部分。 <!-->
位用于终止IE9条件注释,以便非IE浏览器将看到脚本元素以及标记的其余部分并与IE9及更高版本一起使用它,因为它们理解和使用它符合条件。换句话说,对于非IE浏览器以及IE10及更高版本,<!-->
位不支持条件注释。 IE9及更早版本的行为不受影响;旧版本将照常遵守条件评论。
没有它们,标记将如下所示:
<!--[if lte IE 8]>
<script type="text/javascript">
document.body.className = document.body.className.replace( /(^|\s)(no-)?customize-support(?=\s|$)/, '' ) + ' no-customize-support';
</script>
<![endif]-->
<!--[if gte IE 9]>
<script type="text/javascript">
(function() {
var request, b = document.body, c = 'className', cs = 'customize-support', rcs = new RegExp('(^|\\s+)(no-)?'+cs+'(\\s+|$)');
request = true;
b[c] = b[c].replace( rcs, ' ' );
b[c] += ( window.postMessage && request ? ' ' : ' no-' ) + cs;
}());
</script>
<![endif]-->
...这使得整个代码块对非IE浏览器不可见,因为它被视为一个巨大的评论。