isTKS™jQuery,program ≫ jQueryでload先に書いたjavascriptが無視され動かない件[AJAX]

jQueryでload先に書いたjavascriptが無視され動かない件[AJAX]

2012.02.27

jQueryでload先のscriptタグがブラウザに無視されてしまい、
javascriptがまったく動かない、走らないといった動きはデフォなんですかね

この問題ってつまりはこうしないといけないようなものかなぁ

document.write("<scr" + "ipt>alert('write');</scr" + "ipt>");

ググってみると、多くはないにしても事例がいくつか見つかりました
http://ow.ly/9ixPw
http://ow.ly/9iy3T
http://ow.ly/9iy4q

とりあえず自分の解決?法としては、
load先で走らせたいscript内容をload元に書いて
load時のコールバック関数でそれを呼ぶ、といった処理を書いて無理矢理動かしてますけどw

function test() {
  //load先で走らせたい処理
}

$('#mydiv').load('my.html',function(){
  test();
});

もしくはコールバック関数内で$.getScriptを利用するのがいいのかな。たぶんこれがスマートなんだろな。
http://api.jquery.com/jQuery.getScript/

$('#mydiv').load('my.html',function(){
  $.getScript("/javascript.js", function() {
    //load先で走らせたい処理をjavascript.js内に書いといてjavascript.js内の関数を走らせる
  });
});

load先に

<span id="script" style="display:none;">
alert('test');
</span>

とか書いといて、コールバック関数内で文字列を置換してJSを走らせる、っていうトリッキーなやり方をやってる人もいました。

  • このエントリーをはてなブックマークに追加