**問題 [#o82e8242]
- Prototype.jsとかでコンテンツを取得し、それをどこかの<div>のinnerHTMLに代入するとする。
var myAjax = new Ajax.Request(url, {method: 'get'});
var text = myAjax.transport.responseText;
$("hogehoge").innerHTML = text;
- このtextの中身が。
aaaa
<script type="text/javascript">
console.debug("hogehoge");
</script>
bbbb
のようなものだったとして、この<script>〜</script>の中身が実行されない
** 対策 [#f313a1f8]
- 受け取るtextの<script>にIDを振っておく。
aaaa
<script type="text/javascript" id="hogehoge_script">
console.debug("hogehoge");
</script>
bbbb
- innerHTMLに代入した後、上記hogehoge_scriptのinnerHTMLを取得してevalする。(野性的 &bigsmile;)
var myAjax = new Ajax.Request(url, {method: 'get'});
var text = myAjax.transport.responseText;
$("hogehoge").innerHTML = text;
eval($("hogehoge_script").innerHTML);
- ※ JavaScriptのXSSとかを考慮し、evalするまえにサニタイズとかすることは重要だと思う。
tag: [[Ajax>tag/Ajax]], [[JavaScript>tag/JavaScript]]
#blikifooter(志田)