programing

ajax를 통해 html 페이지를 로드할 때 스크립트 태그가 로드됩니까?

fastcode 2023. 3. 31. 22:52
반응형

ajax를 통해 html 페이지를 로드할 때 스크립트 태그가 로드됩니까?

AJAX를 사용하여 html 문서를 로드하면 HEAD 태그 내의 노드(script, link, style, meta, title)는 무시하거나 로드하여 해석합니다.jquery의 ajax() 함수의 경우?

메서드를 호출할 때,dataTypeproperty:에 대해 합니다.

는 "jQuery"의 합니다.dataTypeMIME을 사용하다그러나 다음 항목에서 dataType을 명시적으로 지정할 수 있습니다.

  • html: HTML을 플레인텍스트로 반환합니다.DOM 에 삽입하면 포함된 스크립트태그가 평가됩니다.

  • text: 플레인텍스트 문자열

  • xml: jQuery를 통해 처리할 수 있는 XML 문서를 반환합니다.

  • script: 응답을 JavaScript로 평가하여 일반 텍스트로 반환합니다."cache" 옵션을 사용하지 않는 한 캐시를 사용하지 않습니다.

  • json: 응답을 JSON으로 평가하고 JavaScript 개체를 반환합니다.

  • jsonp: JSONP를 사용하여 JSON 블록에 로드합니다. URL 끝에 "?callback=?"을 추가하여 콜백을 지정합니다.

예를 들어 다음 ajax 콜은 스크립트를 실행하거나 DOM을 조작하지 않고 플레인텍스트 문자열로 데이터를 반환합니다.

$.ajax({
  url: 'ajax/test.html',
  dataType: 'text',
  success: function(data) {
    alert(data);
  }
});

AJAX를 사용하여 html 문서를 로드할 때 HEAD 태그 내의 노드로 수행할 작업: (스크립트, 링크, 스타일, 메타, 제목)

그것은 당신이 어떻게 짐을 싣느냐에 따라 다릅니다. ajax()(기반이 되는 XMLHttpRequest와 마찬가지로) 그 자체에서 스트링만 얻을 수 있습니다.신은그그그 떻떻?? ?????

을 에 쓰면innerHTML이치노이것은 어느 곳에서도 표준화 되어 있지 않지만, 현재 인기 있는 브라우저는 모두 이와 같이 동작합니다.

그러나 이 요소를 문서에 삽입하면(이미 문서 내에 있는지 여부에 관계없이) 처음 실행할 때 많은 브라우저에서 실행됩니다.IE에서는 스크립트 요소를 문서에 있든 없든 직접 삽입하면 스크립트가 실행됩니다.

은 모두 이 없고에 AJAX 로딩은 .<script>를 참조해 주세요.정적으로 하고 JSON(또는 JSON)을 eval반드시 필요한 경우에만) 스크립팅 데이터를 전달합니다.

jQuery'sload함수는 AJAX가 문서에 내용을 로드할 때 브라우저의 차이를 보정하려고 시도합니다.은 모든 하지 못한다.<script>는 안 하다<script> 「 있기 에, 「글쓰기」는 「글쓰기」로 되어 있습니다.HTML 스텝하지만 다시 말씀드리지만, 여러분은 이것에 정말 의지하고 싶지 않을 것입니다.스크립트에서 직접 사용할 수 있는 HTML 또는 JSON의 일부를 서버에서 반환하는 것이 훨씬 좋습니다.

스타일시트나 스타일시트 링크의 경우, 일반적으로 본문에 삽입하는 것이 효과적이지만 HTML 용어로는 그렇지 않을 수 있습니다. meta ★★★★★★★★★★★★★★★★★」title아무 것도 안 할 거야, 효과가 나타나기엔 너무 늦었어.하면 돼요.innerHTML아무 것도 안하겠지만 그래도 할 수 있으면 피하세요

"load"라고 하면 단순히 XHR(또는 $.ajax 또는 $.get 등)을 호출하여 웹 서버에서 XML, JSON 또는 텍스트 리소스를 풀다운하고 브라우저의 JS 런타임 메모리에 저장하고 참조를 얻는 것을 의미합니다.HTML 자원의 경우, 이 동작만으로는 아무것도 해석할 수 없습니다.

단, 이 HTML을 (적어도 Firefox 3.5에서는) DOM에 삽입하면 해석됩니다.예를 들어 다음과 같은 매우 전문적인 파일이 세 개 있다고 가정합니다.

barf1.120:

<html>
    <head>
        <script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(init);

            function init() {
                $.get('barf2.html', inject);
            }

            function inject(data) {
                debugger;
                $('body').html(data);
                //document.write(data);
            }
        </script>
    </head>
    <body>
        long live barf1!
    </body>
</html>

barf2.199:

<div>
    <script type="text/javascript">
        alert('barf2!');
    </script>
    <script type="text/javascript" src="barf3.js"></script>
    barf2 lives here now!
</div>

barf3.199:

alert('barf3!');

barf1.html로 이동하면 페이지 내용이 변경되어 인라인 스크립트블록과 외부 스크립트파일이 모두 해석됨을 나타내는2개의 JavaScript 경보가 표시됩니다.

아니요, 그들은 해석되지 않을 것입니다.

HTML(내부)HTML, 「DOM」입니다. 모두 에 "HTML"이 포함되어 있는 <script>태그는 해석되지 않습니다.

, 「 」, 「 」를 할 수 있습니다.<script>콘텐츠 및 Ajaxed HTML 콘텐츠 내의 태그eval()필필면면면면

의 「」를 사용하고 .<script src="http://site/script.js"></script>아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아.

앞에서 설명한 바와 같이 일반적으로 스크립트 태그는 해석되지 않습니다.

다른 태그는 어떻게 될지 전혀 모르겠어요.

저는 당신이 AJAX에서 페이지 전체를 로드하고 있다고 가정하고 있습니다.왜 그렇게 하고 싶은지 잘 모르겠습니다.좀 더 정보를 주시면 저희가 제안해 드릴 수 있을까요?

질문에 보다 직접적으로 대처하기 위해 일반적으로 새로고침된 콘텐츠에 필요한 스크립트는 콘텐츠가 아닌 페이지를 사용하여 새로고침해야 합니다.이렇게 하면 AJAX에서 이벤트핸들러 등을 재접속하는 콜백을 설정할 수 있습니다.

언급URL : https://stackoverflow.com/questions/2203762/when-loading-an-html-page-via-ajax-will-script-tags-be-loaded

반응형