2010-07-24 4 views
1

사용자가 사용중인 브라우저에 따라 다른 CSS 파일을 표시하려고합니다. JS 및 클라이언트 측에서이 작업을 수행하려고합니다. 이렇게 코드를 사용하고 있습니다.JavaScript 문자열에 HTML을 삽입하고 유효성을 검사하려면 어떻게합니까?

<script language="javascript" type="text/javascript"> 
if ((navigator.userAgent.indexOf("MSIE")) >= "0"){ 
    document.write("<link rel=\"stylesheet\" href=\"css/common.IE.css\" type=\"text/css\" 
} 
if ((navigator.userAgent.indexOf("Chrom")) >= "0"){ 
    document.write("<link rel=\"stylesheet\" href=\"css/common.chrome.css\" type=\"text/css\" />"); 
} 

*이 코드가 유일한 문제는 아닙니다. 내가 어떻게 문제를 해결할 수 있는지. 이 문서를 w3 검사기로 검사 할 경우. 속성 값은 않는 리터럴이어야합니다 : 라인 (22), 열 (90) : *****

…nt.write("<link rel='stylesheet' href='css/common.IE.css' type='text/css' />"); 

라인 (25), 열 (35)는 문서 유형이 여기 요소 "링크"를 허용하지 않는 지금이 표시됩니다 그것은 CDATA tags에 블록 이름 만 문자

document.write("<link rel=\"stylesheet\" href=\"css/common.chrome.css\"… 
+0

자바 스크립트를 지원하지 않거나 사용하지 않는 사용자 에이전트는 어떻게해야합니까? (점점 더 보편화되고 있습니다) 이것은 서버 측에서 수행되어야하는 것처럼 보입니다. – xj9

답변

2

휴식 그것을 ..

document.write("<l" + "ink ... 

또는이

같은 주석을 추가 ... 같은 모양
<script type="text/javascript"> 
//<!-- 

if ((navigator.userAgent.indexOf("MSIE")) >= "0"){ 
    document.write("<link rel=\"stylesheet\" href=\"css/common.IE.css\" type=\"text/css\" 
} 
if ((navigator.userAgent.indexOf("Chrom")) >= "0"){ 
    document.write("<link rel=\"stylesheet\" href=\"css/common.chrome.css\" type=\"text/css\" />"); 
} 


//--> 
</script> 
+0

첫 번째 방법은 현대적인 솔루션을 사용할 수있는 가독성을위한 거꾸로 접근 방식입니다. 또한, 나는 CDATA가 그것을 감쌀 수있는 가장 좋은 방법이라고 생각한다. 예전 스타일의 자바 스크립트를 사용하여 HTML 주석을 주석 처리했다. – alex

3

랩이 포함되어 있습니다.

그래서 그것이 발견되지 않도록 하위 문자열의

<script language="javascript" type="text/javascript"> 
<![CDATA[ 
if ((navigator.userAgent.indexOf("MSIE")) >= "0"){ 
    document.write("<link rel=\"stylesheet\" href=\"css/common.IE.css\" type=\"text/css\" 
} 
if ((navigator.userAgent.indexOf("Chrom")) >= "0"){ 
    document.write("<link rel=\"stylesheet\" href=\"css/common.chrome.css\" type=\"text/css\" />"); 
} 
]]> 
<script> 
3

나쁜 생각. 문제로 인해 다른 브라우저에 다른 스타일 시트를 제공 할 수 있다고 알려주시겠습니까?

하나의 스타일 시트가있는 모든 브라우저에 서비스를 제공하고 CondComs (콘돔과 같은 소리가 들리는)가있는 IE에 추가로 제공해야합니다.

+1

하하, IE *로부터 보호해야합니다. – alex

관련 문제