2012-02-19 8 views
0

私は、デポジットが行われたときにコールバック機能を実行するWebページ上のコントロールを持っています。動的にHTML/Javascriptを実行する

バックエンドでは、ユーザーはスクリプト、イメージ、iframeなどを追加できます。私のプログラムは、バックエンドに入力したコードのスニペットを実行するコントロールデポコールバックと同じ名前のjavascript関数を作成します(スクリプト、 iframe、htmlなど)。

この関数は、クライアントがCMSに入力したすべてのHTML/Javascriptを実行する必要があります。私はユーザーが入力するものを事前に知らない、それはスクリプトや画像、または何か他のものかもしれない。

HTML/Javascriptのスニペットを実行する際に問題が発生しています。

1)私はスクリプト要素を作成し、それを画像やその他のものにすることができるため、DOMに追加することはできません。

2)document.writeは機能しますが、ページを消去します。

3)私はinnerHTMLを使うことはできません。私は動的に追加したスクリプト以外にもすべて機能しました。

4)DOMにスクリプトを追加するときにスクリプトを実行しないため、textNodeを使用できません。

私はそれを動的に追加するたびに、コードの代わりに文字列に実際のコードが出力されます。

誰でも手助けできますか?

ありがとうございました。

p.s. 、

<head> 

<script type='text/javascript'> 

function test(pixelData){ 

var body= document.getElementsByTagName('body')[0]; 

var trackingCode = '&lt;script type=\'text/javascript\'&gt;alert(\'[hi]\');&lt;/script&gt;'; 

var div = document.createElement('div') 

trackingCode = trackingCode.replace(/&gt;/g,'>').replace(/&lt;/g,'<'); 
div.innerText = trackingCode; 

document.documentElement.firstChild.appendChild(div); 

body.appendChild(div); 


} 

</script> 

</head> 
<body> 
<script type="text/javascript"> 
test(); 
</script> 
<div id='whatever'> 

</div> 
</body> 

答えて

0

ないinnerHTMLプロパティを持つ問題だかわからない:ここで

はtrackingCodeは、画像やスクリプトかもしれないところ私はこの仕事を得ることができれば、その後それが私の答えですが、いくつかのHTMLの例です。入力したスクリプトがテキストとして表示されるか、無視されていますか?

要素内に貼り付ける前にcode = escape(code)を使ってみてください。

+0

スクリプトはテキストとして表示されます。 JavaScriptの文字列をエスケープすると、エンコードされたテキストとしてペーストされましたが、実行されませんでした。 – Eitan

関連する問題