2012-09-23 3 views
2

그래,이 코드 줄을 조건부로 추가하고 싶습니다. 사용innerHTML이있는 IE에 조건부 주석을 포함하려면 어떻게해야합니까?

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

하십시오 if()/else() 문에서

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

하고 그것을 쓰지 않는다! 선택 코멘트 (<!--[if ! IE]><![endif]-->)를 없애고 SVG (<embed src="logo.svg" type="image/svg+xml" />) 만 넣으면 작동합니다! 나는 어떻게해야합니까?

나는 길을 찾았지만 안드로이드 브라우저에서 두 번 나타납니다.

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> 

답변

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의 코멘트가 좋은 유효한 마크 업에게 나쁜 마크 업의 결과 -

Microsoft는 방법을 권장합니다.

귀하의 방법은 절대로 닫히지 않으므로 올바르게 처리되지 않습니다. html comment이 시작됩니다. html comments은 처음에는 --으로 열리고 두 번째로 닫힙니다. 그들은 일반 요소처럼 >으로 끝나지 않습니다.

0

그것은이 좋아하는 innerHTML을에 넣어하지만,이 innerHTML을 간다 여부를 제어 할 조건을 사용하거나하지 아니 아마도 더 나은 : 당신이 우리에게 모든 문제를 보여 주면

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

을 해결하려고하면 브라우저 조건없이이 작업을 수행 할 수있는 방법이있을 것입니다.

+0

나는 실제적으로 주위에 방법을 발견했다고 생각해! 하지만 내가 다시 잡으려고하는 방법은 SVG가 브라우저에서 지원하는 곳에서 SVG가 표시 될 수있는 방법이며 다른 곳에서는 IE 및 Android 브라우저를 포함하여 팝업이 대신 표시됩니다. –

관련 문제