검색결과 리스트
javascript인식에 해당되는 글 1건
글
[extjs 3.0] Ext.Updater.update()를 사용할시 마크업에 포함된 javascript실행 불가문제.
Javascript
2009. 6. 5. 10:44
extjs를 사용하여 특정 엘리멘트의 내용을 ajax로 업데이트 할 수 있다.
예를들면 다음과 같다.
javascript는 기본적으로 인식되지 않는다.
extjs에선 update를 이용하여 이를 해결 할 수 있으며 scripts: true 옵션을 주면
응답받는 html(마크업)안에 포함된 javascript를 인식 시킬 수 있다.
하지만 안되는 경우가 있다.
본인이 안되었던 경우의 코드를 보면
뜨지 않는다. 이를 firebug를 통해서 확인해보면
Ext.EventObject is undefined 에러가 발생하는걸 확인 할 수 있다.
맨처음에는 Ext의 Bug일거라 의심했었는데
확인해 보니 Ext.EventObject의 경우
Ext.onReady를 통해서 초기화 된다고 한다. 즉 Ext를 통해서 초기화 되지 않는 일반적인 javascript의 function에서
Ext.Updater.update()의 scripts:true를 사용할 수 없다는 말이 된다.
해결방법은 Ext.onReady를 통해서 해당 function을 초기화 시켜주면 된다.
즉 해당 페이지에서 사용될 클래스를 정의하고 해당 클래스를 Ext를 통해서 호출해주면된다.
관련정보 : http://extjs.com/forum/showthread.php?t=34084
예를들면 다음과 같다.
Ext.get("myId").getUpdater().update({Ajax를 통해서 특정 엘리멘트(DOM Object) 의 html을 변경할 경우 Ajax를 통해서 응답받은 html(마크업)안에 포함된
url: 'test.jsp',
scripts: true //response의 html(마크업)안에 포함된 javascript를 인식시키고자 할경우
});
javascript는 기본적으로 인식되지 않는다.
extjs에선 update를 이용하여 이를 해결 할 수 있으며 scripts: true 옵션을 주면
응답받는 html(마크업)안에 포함된 javascript를 인식 시킬 수 있다.
하지만 안되는 경우가 있다.
본인이 안되었던 경우의 코드를 보면
//호출부
<script>
function test() {
Ext.get("myId").getUpdater().update({
url: 'test.jsp',
scripts: true
});
}
</script>
//응답부이런경우 응답부의 테스트버튼을 누르면 Hello alert창이 떠야하나
<script>
function write() {
alert("Hello...");
}
</script>
<div>
<input type="button" value="테스트" onClick="write();" />
</div>
뜨지 않는다. 이를 firebug를 통해서 확인해보면
Ext.EventObject is undefined 에러가 발생하는걸 확인 할 수 있다.
맨처음에는 Ext의 Bug일거라 의심했었는데
확인해 보니 Ext.EventObject의 경우
Ext.onReady를 통해서 초기화 된다고 한다. 즉 Ext를 통해서 초기화 되지 않는 일반적인 javascript의 function에서
Ext.Updater.update()의 scripts:true를 사용할 수 없다는 말이 된다.
해결방법은 Ext.onReady를 통해서 해당 function을 초기화 시켜주면 된다.
즉 해당 페이지에서 사용될 클래스를 정의하고 해당 클래스를 Ext를 통해서 호출해주면된다.
<script>이런식의 처리해주면 응답은 html(마크업)안의 javascript도 정상적으로 인식된다.
MyClass = function() {
init: function() {
},
test: function() {
Ext.get("myId").getUpdater().update({
url: 'test.jsp',
scripts: true
});
}
}();
Ext.EventManager.onDocumentReady(MyClass .init, MyClass , true);
</script>
<div id="myid"></div>
<input type="button" value="실행" onClick="MyClass.test();" />
관련정보 : http://extjs.com/forum/showthread.php?t=34084