如何使用innerHTML嵌入IE的条件注释?

时间:2012-09-23 20:13:42

标签: javascript html svg innerhtml conditional-comments

好的,我想有条件地添加这行代码;

<!--[if ! IE]> <embed src="logo.svg" type="image/svg+xml" /> <![endif]-->

使用:

document.getElementById("logo") .innerHTML='...';

if()/else()语句中,它不写! 如果我摆脱选择性评论(<!--[if ! IE]><![endif]-->)并且只放置SVG(<embed src="logo.svg" type="image/svg+xml" />)它就可以了!我该怎么办?

我找到了解决方法,但我认为在Android浏览器中会弹出两次。

here's what I've done ( and its Validated stuff!);

<!DOCTYPE html>
<html>
<head>
<META CHARSET="UTF-8">
<title>SVG Test</title>
<script type="text/javascript">
//<![CDATA[
onload=function()
    {

        var ua = navigator.userAgent.toLowerCase();
var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile");
if(isAndroid) {

        document.getElementById("logo").innerHTML='<img src="fin_palais.png"/>';

        }


    }
//]]>

</script>
</head>
<body>

    <div id="logo">
        <!--[if lt IE 9]>
            <img src="fin_palais.png"/>
        <![endif]-->

        <!--[if gte IE 9]><!-->

            <embed src="fin_palais.svg" type="image/svg+xml" />

        <!--<![endif]-->

    </div>

</body>

2 个答案:

答案 0 :(得分:0)

最好不要将它放在innerHTML中,但是使用条件来控制它是否在innerHTML中,或者不是这样:

var str = '...';    // whatever your other HTML is
<!--[if ! IE]>
str += '<embed src="logo.svg" type="image/svg+xml" />';
<![endif]-->

如果您向我们展示了您要解决的整个问题,那么可能有办法在没有浏览器条件的情况下执行此操作。

答案 1 :(得分:0)

您检测非IE的语法已损坏。

Microsoft推荐的方法 - 导致标记错误

<![if !IE]>
 <p>This is shown in downlevel browsers, but is invalid HTML!</p>
<![endif]>

这种方式也有效,并且是有效的标记

<!--[if !IE]>-->
  <p>This is shown in downlevel browsers.</p>
<!--<![endif]-->

那就是说,@ jfriend00的评论很好。

你的方式从html comment开始,永远不会关闭,因此无法正确处理。第一个html comments打开--,第二个关闭>。它们不会像{{1}}那样关闭常规元素。