이것은 Safari에만 관련된 문제인 것 같습니다. 나는 Mac에서 4, Windows에서 3을 시도했지만 여전히 운이 없습니다.
외부 HTML 파일을로드하고 포함 된 JavaScript를 실행하려고합니다.
내가 사용하려는 코드는 다음과 같습니다.
$("#myBtn").click(function() {
$("#myDiv").load("trackingCode.html");
});
trackingCode.html
다음과 같이 보입니다 (이제 간단하지만 한 번 확장됩니다 /이게 작동하면).
<html>
<head>
<title>Tracking HTML File</title>
<script language="javascript" type="text/javascript">
alert("outside the jQuery ready");
$(function() {
alert("inside the jQuery ready");
});
</script>
</head>
<body>
</body>
</html>
IE (6 및 7)와 Firefox (2 및 3)에서 경고 메시지가 모두 표시됩니다. 그러나 Safari에서 메시지를 볼 수 없습니다 (관심이 필요한 마지막 브라우저-프로젝트 요구 사항-화염 전쟁은 삼가십시오).
Safari가 trackingCode.html
파일 에서 JavaScript를 무시하는 이유에 대한 생각이 있습니까?
결국 trackingCode.html
jQuery 준비 호출 내에서 사용 하기 위해이 파일에 JavaScript 개체를 전달할 수 있기를 원 하지만 그 길을 가기 전에 모든 브라우저에서 이것이 가능한지 확인하고 싶습니다.
답변
html, head 및 body 태그를 포함하여 전체 HTML 페이지를 div에로드합니다. 로드를 수행하고로드하는 HTML에 여는 스크립트, 닫는 스크립트 및 JavaScript 코드 만 있으면 어떻게됩니까?
다음은 드라이버 페이지입니다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery Load of Script</title>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("jquery", "1.3.2");
</script>
<script type="text/javascript">
$(document).ready(function(){
$("#myButton").click(function() {
$("#myDiv").load("trackingCode.html");
});
});
</script>
</head>
<body>
<button id="myButton">Click Me</button>
<div id="myDiv"></div>
</body>
</html>
trackingCode.html의 내용은 다음과 같습니다.
<script type="text/javascript">
alert("Outside the jQuery ready");
$(function() {
alert("Inside the jQuery ready");
});
</script>
이것은 Safari 4에서 저에게 효과적입니다.
업데이트 : 내 테스트 환경의 코드와 일치하도록 DOCTYPE 및 html 네임 스페이스를 추가했습니다. Firefox 3.6.13에서 테스트되었으며 예제 코드가 작동합니다.
답변
$("#images").load(location.href+" #images",function(){
$.getScript("js/productHelper.js");
});
답변
바로 전에 John Pick 솔루션 의 다른 버전 이 나에게 잘 작동합니다.
jQuery.ajax({
....
success: function(data, textStatus, jqXHR) {
jQuery(selecteur).html(jqXHR.responseText);
var reponse = jQuery(jqXHR.responseText);
var reponseScript = reponse.filter("script");
jQuery.each(reponseScript, function(idx, val) { eval(val.text); } );
}
...
});
답변
나는 이것이 다소 오래된 게시물이라는 것을 알고 있지만 비슷한 솔루션을 찾고있는이 페이지에 오는 모든 사람에게는 …
http://api.jquery.com/jQuery.getScript/
jQuery.getScript( url, [ success(data, textStatus) ] )
url
-요청이 전송되는 URL이 포함 된 문자열입니다.
success(data, textStatus)
-요청이 성공하면 실행되는 콜백 함수.
$.getScript('ajax/test.js', function() { alert('Load was performed.'); });
답변
HTML 필드를 동적으로 생성 된 요소에로드하는 경우 작동하지 않는 것 같습니다.
$('body').append('<div id="loader"></div>');
$('#loader').load('htmlwithscript.htm');
방화범 DOM을 보면 스크립트 노드가 전혀없고 HTML과 CSS 노드 만 있습니다.
누구든지 이것을 본 적이 있습니까?
답변
거의 얻었습니다. 스크립트 만로드하고 싶다고 jquery에 알립니다.
$("#myBtn").click(function() {
$("#myDiv").load("trackingCode.html script");
});
답변
html 로딩 기능을 위해 다음 jquery 플러그인을 작성했습니다. http://webtech-training.blogspot.in/2010/10/dyamic-html-loader.html