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(/]*)?>[\S\s]*?<\/script[ \t\r\n]*>|<\/?(?:i?frame|html|script|object)(?:[ \t\r\n][^<>]*)?>/gi, "");
    var _div = $("
" + html + "
");     // 取得したHTMLの走査は_div.find("a")のようにする     // hogehoge   } });

コピペ用

html = html.replace(/]*)?>[\S\s]*?<\/script[ \t\r\n]*>|<\/?(?:i?frame|html|script|object)(?:[ \t\r\n][^<>]*)?>/gi, "");

何か役に立つことがあったらシェアしてみてください

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

Comments: 1 - Leave a comment

  1. SCT

    こんにちは!色々なAjaxの貴重な記事に感謝しております。
    私が正規表現を理解できてないのでお聞きしたいのですが、$.ajaxで取得したhtmlからreplaceで削除しているのはscript要素の他は何を削除しているのでしょうか?たいへん恐縮ですが教えていただけないでしょうか?

Leave a comment

Trackbacks: 0

Trackback URL for this entry
Listed below are links to weblogs that reference
JSファイルを含むページをAjaxロードしたときにJSを実行しないさせないしたくない from 5509

Author

nori
nori
- UI Engineer
Location
- ,