**問題 [#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(志田)
 

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

アークウェブのサービスやソリューションはこちら