2

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

<!--[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>
4

2 回答 2

0

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

微软推荐的方式 - 导致错误的标记

<![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用第一个打开,--用第二个关闭。它们不会以>类似的常规元素关闭。

于 2012-09-23T20:31:59.403 回答
0

最好不要把它放在innerHTML中,而是使用条件来控制它是否进入innerHTML,如下所示:

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

如果您向我们展示您要解决的整个问题,可能有一些方法可以在没有浏览器条件的情况下做到这一点。

于 2012-09-23T20:28:19.680 回答