0

我正在尝试为SRCIE 8 或更低版本的用户更改 iFrame 的属性。

这是我的代码:

  <script>
var i_am_old_ie = false;
<!--[if lte IE 8]>
i_am_old_ie = true;
<![endif]-->
</script>
    <script type="text/javascript">
    $(document).ready(function() {
if(i_am_old_ie) {
   $("#shop").attr("src","shopping_cart/browser_support.html"); 
} else {
    $("#shop").attr("src","shopping_cart/index.html"); 
}      
});
</script>

它检测到它是 IE……但仍将所有 IE 用户发送到shopping_cart/browser_support.html. 即使我使用 IE 9,它也会将我发送到那里。7 或 8 也是一样。

但它会将所有其他不使用 IE 的用户发送到shopping_cart/index.html(这是正确的)。

我的代码有什么问题?

谢谢!

4

4 回答 4

6

您不能在脚本标签内插入。它需要在外面。

<script>
var i_am_old_ie = false;
</script>

<!--[if lte IE 8]>

<script>
i_am_old_ie = true;
</script>
<![endif]-->
于 2012-08-01T20:33:12.577 回答
1

正如其他人提到的,您不能在<script>标签之间使用 HTML 条件语句。

但是,这应该有效:

if (document.all && !document.getElementsByClassName) {
    i_am_old_ie = true;
}

以上只能在IE8或以下运行

编辑:

一些很好的例子链接

于 2012-08-01T20:35:17.203 回答
1

JavaScript 中的条件注释有不同的语法。 @cc_on 在 JavaScript 中是什么意思?有细节。

Wikipedia 的 Conditional comment page 有一个使用它的版本切换示例。

<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-08-01T20:36:02.903 回答
0

条件 HTML 注释仅适用于 HTML。

JavaScript 不是 HTML。

这通常不是一个好主意,建议使用特征检测,但如果使用 jQuery,你可以这样做:

var i_am_old_ie = $.browser.msie && ($.browser.version <= 8);
于 2012-08-01T20:32:49.953 回答