JSファイルを含むページをAjaxロードしたときにJSを実行しないさせないしたくない
この前ちょっと聞かれたので、メモっときます。
AjaxでJS含んだページをそのままロードするとDOMに追加した時点で実行しよるんで、それを回避するためのやつです。Autopagerizeを参考にしたと思います。
ついでに取得したHTMLの走査方法ですが、そのまま$(html)とかにすると、一番上のwrapperとかそういうdivだったりする要素が取得できないので、一旦divをかませておきます。
Ajax部分のソースコード
$.ajax({
url: "hoge.html",
type: "GET",
success: function(html) {
// 文字列で取得したデータを整理する
html = html.replace(/<script(?:[ \t\r\n][^>]*)?>[\S\s]*?<\/script[ \t\r\n]*>|<\/?(?:i?frame|html|script|object)(?:[ \t\r\n][^<>]*)?>/gi, "");
var _div = $("<div>" + html + "</div>");
// 取得したHTMLの走査は_div.find("a")のようにする
// hogehoge
}
});
コピペ用
html = html.replace(/<script(?:[ \t\r\n][^>]*)?>[\S\s]*?<\/script[ \t\r\n]*>|<\/?(?:i?frame|html|script|object)(?:[ \t\r\n][^<>]*)?>/gi, "");


