1

PHP、MySQL、AJAX、Javascript、HTML5、css3 を使用して Web サイトを開発しています。外部の html ファイルを読み込み、埋め込まれた Javascript を実行しようとしています。

私が使用しようとしているajaxロードはこれです

<pre><code>


    $(document).ready(function(){

        $(".meny a").click(function(){
            page=$(this).attr("href");
            $.ajax({
                url: "includes/"+page,
                cache:false,
                success:function(html){
                    afficher(html);
                },

                error:function(XMLHttpRequest,textStatus,errorThrown){
                    alert(testStatus);
                }
            })

            return false;
        });
    });

    function afficher(data){
        $("#main").fadeOut(500,function(){
        $("#main").empty(); 
        $("#main").append(data);
        $("#main").fadeIn(1000);
        })
        }


</code></pre>

ページのコンテンツが直接ロードされた場合、javascript(またはjQuery)関数は正常に機能しますが、AJAXによってロードされた別のページのコンテンツで見つかったdivタグの場合、javascript(またはjQuery)はこのdivで機能しませんが、jqueryスクリプトはすでに「head」タグに格納されています。

Javascriptを含むページを直接呼び出すとうまくいくので、問題はAJAXだと思います。

4

3 に答える 3

2

@kieranいいえ、私はこのトリックを試したことはありません! 私は本当の問題を理解していると思います!

jQuery は、実際には ajax 呼び出しで遭遇するすべての JavaScript を削除します。彼らは IE の問題を防ぐために意図的にそれを行います。jQuery 1.8.3 の実際のスニペット (7479 ~ 7481 行目) は次のとおりです。

// inject the contents of the document in,removing the scripts 
// to avoid any 'Permission Denied' errors in IE 
.append( responseText.replace( rscript, "" ) ) 

行 7291 では、rscript 正規表現を定義する場所です: rscript = /(?:(?!</script>)<[^<])*</script>/gi です。その通りです。コールバックを追加する必要があります。関数を ajax にロードします。

于 2013-01-16T19:14:17.827 に答える
0

デフォルトでは、AJAXによって取得しているページに含まれているJavaScriptは、プレーンテキストのように扱われるため、実行されません。

テキストをjavascriptとして評価する必要があります。javascriptには、これを実現できる組み込み関数がありますevaltechnify.meevalのおかげで、AJAXでの使用に関する良い記事があります。

ただし、使用evalは悪い習慣と見なされていることに注意する必要があります。パフォーマンスが低く、XSSに脆弱性がある可能性があるため、「評価は悪」ということわざがよく知られています。scriptしたがって、AJAX呼び出し(おそらく動的に構築されたタグ)を直接使用せずに、同様の効果を実現する方法を検討することをお勧めします。evalただし、応答が純粋にjavascriptである場合は、目的に応じて機能します。それ以外の場合は、返されるHTMLからJavaScriptを何らかの方法で抽出する必要があり$.getます。

于 2013-01-14T06:34:18.727 に答える
-2

使用する

 $(".meny a").on( 'click', ...

それ以外の

 $(".meny a").click( ....

これ$(".meny a")でクリックできるようになります

于 2013-01-14T06:20:57.160 に答える