私は、デポジットが行われたときにコールバック機能を実行する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 = '<script type=\'text/javascript\'>alert(\'[hi]\');</script>';
var div = document.createElement('div')
trackingCode = trackingCode.replace(/>/g,'>').replace(/</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>
スクリプトはテキストとして表示されます。 JavaScriptの文字列をエスケープすると、エンコードされたテキストとしてペーストされましたが、実行されませんでした。 – Eitan