2009-11-25 20 views
8

divタグがあり、これはajax呼び出しでスクリプトで埋められていますが、スクリプトは実行されません。AJAX経由のスクリプトタグの読み込み

スクリプトを実行させる方法はありますか?

+0

をDOM関数を使用して記述する必要が

document.body.innerHTML+="<script>alert(1)</scr"+"ipt>"; 

はこの質問に関連して利用できる任意のコードはありますか? – miku

+0

非常に曖昧な質問です。コードとサンプルをお願いします。 – mauris

+0

- divタグのクライアント側にダンプされます。 –

答えて

11

あなたはjQueryの.htmlメソッドを使用する場合は、スクリプトタグや試用版とそのそれを解析します

$("div").html('<script type="text/javascript">alert("This should work")</script>'); 

jQueryのオプションでない場合は、(1)正規表現、または(のいずれかを使用して、この自分で書くことができます2)DOMツリーを解析してスクリプトタグを探します。私は推測

+0

jQueryがトリガされる必要があります。クライアントに返されるペイロードにこれを含めた場合、ダウンロードされたajaxスクリプトは起動しないため、実行されません。例外:私はスクリプトマークアップでdeferタグを設定することができ、IEはそれを実行しますが、それはユーザーのx%です。 –

+0

@Caleb:答えの中のコードは何をしていますか? – Ashwin

+0

これは、AJAXリクエスト内のスクリプトタグが、応答のhtmlにある場所に終わらない理由もあります。 – Ikke

0

divのinnerHtmlを設定すると、スクリプトタグが実行されます。私は$( "#divid")を使用しています。動的コンテンツを読み込むload()とスクリプトタグは実行されます。

プレーヤのJavaScriptを使用していない場合は、JQueryを使用してみてください。

+0

それは悲しいことです。クライアントへのAjax配信ペイロードのhtmlペイロードのスクリプトは実行されません。 –

3

コンテンツをコードから分離することは常に良い考えです。 AJAX経由でコンテンツを読み込み、<script>タグを挿入してコードを作成します。 jQueryを使用している場合は、$.getScript()を使用してスクリプトを動的に読み込みます。

2

(#2は、jQueryのそれをしない方法です)、あなたはこれが動作しません直接

innerHTMLプロパティにスクリプトタグを書いています。あなたはこの

var tag = document.createElement("script"); 
tag.innerHTML="alert(1)"; 
document.body.appendChild(tag); //can be append to any object other than body 

またはより良い使用のようなjQuery

+0

問題は、スクリプトがAjaxペイロードに含まれ、DIV内のクライアントに送信されることです。私はそれがクライアントに到着したら鶏と卵の問題があるので、スクリプトを開始することができません。 –

+0

こんにちは、Ajaxの返品では、どのような結果ですか?ちょうどjavascriptコード?またはスクリプトタグを含める?もしjavascriptコードであれば、 'eval'かincludeスクリプトタグであれば、上記の例を私の投稿で使い、divタグで' document.body'を変更してそこに追加することができます。 – YOU

+0

とあなたのウェブサイトとより多くの説明のようなより多くの情報をあなたのポストを更新することができますか?人々は気付くだろうし、あなたの現在の問題、rgdsも見つけることができるからです – YOU

関連する問題