编程语言
首页 > 编程语言> > javascript – 如果OR <! - [if lte IE 7]>满足条件评论,而不重复内容,则显示内容?

javascript – 如果OR <! - [if lte IE 7]>满足条件评论,而不重复内容,则显示内容?

作者:互联网

我正在开发一个不支持IE6或IE7的Javascript驱动的交互式工具.

如果有人使用旧的IE,或者使用禁用Javascript的浏览器,我们会给他们一些简单的静态内容作为后备:普通图像和文本.

我可以通过复制静态内容,在< noscript>中复制一个副本来做到这一点.阻止和条件评论中的一个副本,像这样……

<!--[if lte IE 7]>
<div id="some-id">
<p> Some content </p>
<img src="url.com" alt="Screenshot of awesome tool" title="This is what you're missing" />
<p> Some more content </p>
<div id="some-more"> ... etc ... </div>
</div>
<![endif]-->

<noscript><![if !(lte IE 7)]> 
<div id="some-id">
<p> Some content </p>
<img src="url.com" alt="Screenshot of awesome tool" title="This is what you're missing" />
<p> Some more content </p>
<div id="some-more"> ... etc ... </div>
</div>
<![endif]></noscript>

…但如果可能的话,最好避免重复这样的内容.没有不必要的重量,更容易更新,没有任何搜索引擎机器人将隐藏的重复内容解释为关键字垃圾邮件等的风险.此外,避免重复只是一个普遍的好习惯.

(另外,我们可以在< noscript>标签中丢失可怕的<![if!(lte IE7)]> …如果某人有IE6或IE7禁用了Javascript,那么他们就看不到内容两次…我听说过一些公司系统,他们将遗留的定制系统与旧版本的IE绑在一起,这样做是为了让旧的IE稍微安全一些……)

如果我将条件内容包装在< noscript>中,或者反之亦然,它将是’AND’逻辑 – 仅在满足两个条件时显示(禁用Javascript的IE6 / 7).

是否有任何方法可以通过’OR’逻辑使其工作 – 所以有一个内容块,如果没有Javascript,或者如果IE低于版本7,则显示一个内容块?或者使用Javascript切换< noscript>的一些聪明简单可靠的方法如果浏览器启用了Javascript并且是旧版本的IE(理想情况下,无需等待文档就绪)?

由于我已经在使用条件评论,因此严格遵守标准并不是一件大事.如果有一种方法涉及< noscript>属性中的脚本标签,那没关系. jQuery语法也很好.

向旧的IE或noscript浏览器提供一块后备内容的简单,干净的方式将是非常有用的.

解决方法:

我认为我已经破解了它而不需要任何javascript(并且,只使用有效的HTML!),在idley浏览到this question之后,其中有一个答案展示了<! - [if!(IE)]><! - - &GT除了IE<! - <![endif] - >之外的任何人特技:

<!--[if gt IE 7)]><!--> <noscript> <!--<![endif]-->
<div> Content here </div>
<!--[if gt IE 7)]><!--> </noscript> <!--<![endif]-->

noscript标签,因此noscript条件,只有在它不是旧的IE时才被读取.因此,无论javscript是否处于活动状态,旧的IE都会显示内容,而非旧的IE仅在满足noscript条件时显示内容.

澄清…

非IE浏览器会跳过评论,将其读作:

<!-- blah blah --> <noscript> <!-- blah blah -->
<div> Content here </div>
<!-- blah blah --> </noscript> <!-- blah blah -->

IE 8看到条件注释,符合标准,并读取所有内容.这会立即关闭评论并显示< noscript>标签:

<!-- --> <noscript> <!-- -->
<div> Content here </div>
<!-- --> </noscript> <!-- -->

旧的IE看到条件注释,标准失败,所以跳过所有内容,直到它到达[endif].没有< noscipt>标记,它始终显示后备内容:

<!--[STOP READING]...[START READING]-->
<div> Content here </div>
<!--[STOP READING]...[START READING]-->

标签:javascript,internet-explorer,html,noscript,conditional-comments
来源: https://codeday.me/bug/20190529/1181043.html