내 스크립트가 W3C 검증에 실패한 이유는 무엇입니까?
-
11-09-2019 - |
문제
이 코드가 있습니다.
<script language="javascript" type="text/jscript">
document.write("<img src='http://dm.leadgenesys.com/jpgp.lgt?en=P.........TP_Q=&ur=' + escape(document.referrer) + '' border='0' alt='no alt' />");
</script>
그리고 ... 검증하려고 할 때이 오류가 주어졌습니다.
문서 유형은 여기에서 "IMG"요소를 허용하지 않습니다.
… rer) + ' "border ="0 "alt ="alt " />');
위에서 지명 된 요소는 허용되지 않는 상황에서 발견되었습니다. 이는 내부 "헤드"대신 "바디"섹션의 "스타일"요소와 같이 중첩 된 요소 또는 겹치는 두 개의 요소 (허용되지 않음)가 잘못된 중첩 요소를 가지고 있음을 의미 할 수 있습니다.
이 JavaScript W3C를 준수하기 위해 무엇을 할 수 있는지 아십니까?
해결책
단순 : JavaScript를 HTML로 검증하려고하지 마십시오.
여러 가지 방법 으로이 작업을 수행 할 수 있습니다. 그러나 가장 좋은 점은 별도의 JS 파일로 옮기고 짧은 스크립트에서 호출하는 것입니다.
<body>
...
<script type="text/javascript" language="javascript">WriteImage();</script>
...
</body>
... 또는 더 나은 아직 도랑 document.write()
DOM이로드 된 후 완전히 조작하고 DOM을 조작합니다.
또한보십시오: 눈에 띄지 않는 JavaScript
다른 팁
유효성 검사기를 침묵시키는 또 다른 방법 ...
다음과 같이 말하십시오.
<script type="text/javascript">
/* <![CDATA[ */
your_javascript_here("<" + ... ;
/* ]]> */
</script>
CDATA 부분은 유효성 검사기에 충분해야합니다. / * 스타일 댓글 * /는 CDATA 태그를 인식하지 못하는 이전 브라우저를위한 것입니다 (그렇지 않으면 JavaScript를 깨뜨릴 수 있음).
어때
<script>
<!--
var i = null;
if ((i/0) == 12)
alert("whooo! pack your things, as it's starting to rain cats and dogs!");
--><script>
"스크립트"의 내용이 "HTML 주석"내부에 있는지 확인하십시오.
당신은 아마도 당신을 가질 것입니다 <script>
당신의 요소 <head>
, 본질적으로 당신은 당신을 만들려고합니다 <img>
작동하지 않는 문서의 헤드에서. 스크립트를 넣어야합니다 <body>
.
그러나 나는 당신을 추천합니다 DOM을 통해 요소를 추가하십시오 대신, 당신은 이런 종류의 문제에 빠질 가능성이 적기 때문입니다.
HTML4 표준의 일부입니다. 당신은 탈출해야합니다 "
<SCRIPT type="text/javascript">
document.write ("<EM>This will work<\/EM>")
</SCRIPT>
또 다른 솔루션은 아마도 외부 파일에서 JS 코드를 이동하는 것입니다.
document.write("<" + "img … /" + ">");
또는:
document.write("\x3Cimg … /\x3E");