2012-05-23 5 views
5

본질적으로 머리글, 바닥 글 및 본문보기가있는 웹 응용 프로그램이 있습니다. history.js 라이브러리와 HTML5 푸시 스테이트를 사용하여 웹 사이트를 ajaxifying하고 있지만, 경험하고있는 문제 중 하나는 javascript가 DOM에 삽입 될 때 실행되는 임베디드 javascript를 얻는 것입니다.AJAX를 통해로드 된 DOM에 동적으로 주입 된 자바 스크립트 실행 (history.js가있는 웹 사이트를 ajaxify하려고 시도)

거의 모든 내 자바 스크립트가 jQuery를에 싸여 (함수() {...}) (문서에 준비 로더)

사람이 처리하기위한 좋은 전략을 알고 있나요? 감사!

답변

7

"페이지"는 동적으로로드하는 HTML 컨테이너입니다. 이 HTML에는 현재 실행되지 않는 JavaScript 스크립트 블록이 있습니다. 그 맞습니까? 페이지 스크립트에 있거나 새 스크립트 파일에 대한 링크입니까? How do you execute a dynamically loaded JavaScript block?

내 자신의 생각 : 당신의 용기는 매우 일반적이기 때문에 자바 스크립트 당신이해야 할 수도 있습니다 무엇을 알 수없는 한

, 가장 간단한 방법은 아마도

은 어떤 경우에도,이 귀하의 질문에 대답을 생각 모든 자바 스크립트를 컨테이너 페이지에 수동으로 첨부하여 컨테이너와 함께로드합니다. 아마도 하나의 파일로 축소되고 연결됩니다.

스크립트를 동적으로로드해야하지만 스크립트가 무엇인지 알 수 있다면 .getScript() 또는 .ajax()를 사용하여 jQuery를 사용할 수 있습니다. 나는이 페이지가 멋지게 철자했다고 생각했다. http://www.electrictoolbox.com/jquery-dynamically-load-javascript-file/.

마찬가지로 HTML 블록을 잡을 때까지 필요한 스크립트를 모르는 경우 스크립트 링크로 html을 구문 분석하고 페이지에 추가 된 새 스크립트 요소를 통해 수동으로 첨부 할 수 있습니다. 예를 들어, 아래 스크립트는 jQuery가없는 경우 페이지에 jQuery를 추가합니다.

(function() { 

    if (typeof(jQuery) == "undefined") { 
     var headID = document.getElementsByTagName("head")[0];   
     var newScript = document.createElement('script'); 
     newScript.type = 'text/javascript'; 
     newScript.id = 'myjQuery'; 
     newScript.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js'; 
     headID.appendChild(newScript); 
    } 

    window.addEventListener('load', function (e) { 

     //make jQuery calls here. 

    }, false); 

})(); 
+0

난 그냥 좋은 답을 찾을 생각으로 설정할 수 있습니다 : HTML을 일반 텍스트로 반환하며 포함 된 스크립트 태그는 ins DOM에서 erted. " 나는 그것을 시험해 볼 것이다. 그러나 이것은 내가 필요로하는 것처럼 들리 네. :) –

+0

그 소리는 멋지고 쉽다. 행운을 빕니다! – jatrim

-1

사용 .on, 내가 알 그런 기능을하지만, 몇 마디의 행동을 설명하려고하지 않습니다 당신이 사업부 당신에게 "onclick을"결합 예를 들어, DOM에 버블 요소를 통해

일 http://api.jquery.com/jQuery.ajax/ 데이터 유형 설정 속성 : ""HTML "일부 또는 그의 자녀의 모든 X의 행동을 가지고

관련 문제