[javascript] src AND 콘텐츠가 포함 된 스크립트 태그는 무엇을 의미합니까?

Google +1 버튼의 예 :

<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
      {"parsetags": "explicit"}
</script>

스크립트 태그에는 src-Attribute 내용이 있습니다. 이것은 무엇을 의미하며 어떻게 작동합니까?



답변

다른 브라우저는 이것을 다르게 취급합니다. 일부 src는 오류없이 포함 된 경우에만 콘텐츠를 실행합니다 . 일부 src는 성공 여부에 관계없이 스크립트 를 포함하려고 시도한 후 실행합니다 . 이 동작은 신뢰할 수 없으며 ( HTML5에서는 금지됨 ) 피해야합니다.

Google은 특정 행동에 의존하지 않습니다. 내용은 객체 리터럴 (값) 일 뿐이므로 실제로 실행하면 자동 오류가 발생하는 것 외에는 아무 것도 수행하지 않습니다. Google의 코드는 script태그 자체 의 내용을보고 이를 기반으로 동작을 조정합니다.


답변

스크립트 요소src 속성 이 있으면 내용 무시 해야 하며 다른 동작은 부적합합니다.

평가되지 않을 것임을 알고있는 요소에 콘텐츠를 넣은 다음 DOM 메서드를 사용하여 콘텐츠를 문자열로 가져와 평가 하거나 새 스크립트 요소에 삽입하는 것이 블로그 (핵으로)에서 제안되었습니다 . 둘 다 좋은 생각이 아닙니다.


답변

HTML5 초안 사양 에 따르면 ,<script> 와 요소 src의 속성은 주석 처리해야 스크립트에 대한 설명서를 제공하기위한 것입니다 코드. Google이이 사양을 준수하는 것처럼 보이지는 않습니다.


답변

스크립트가로드 된 후 자체 스크립트 태그 내부를 살펴보고 내용에 액세스합니다.

다음과 유사한 코드를 사용합니다.

var scripts = document.getElementsByTagName("script");
var data = eval(scripts[scripts.length - 1].innerHTML);

씨의 존 레식 .


답변