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ブラウザでは2回ポップアップ表示されると思います。

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

これを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 に答える
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最初のもので開き--、2番目で閉じます。>それらは、通常の要素のように閉じません。

于 2012-09-23T20:31:59.403 に答える