0

私が耳を傾ける特定のイベントが発生した場合、Google 広告コードを呼び出す JavaScript を div 'divDynamicAdvert` に入力したいと考えています。

次のようなスクリプト ノードを追加する必要があることを示してくれた "tenbits" に感謝します。

function myEventHandler(evt)         //called when event is caught
{   
  var script = document.createElement('script');
  script.textContent = 'alert(1)';
  document.getElementById('divDynamicAdvert').appendChild(script);
}

これはうまく機能しますが、アラートの代わりに Google 広告 Javascript を挿入する必要があります。

<script type="text/javascript"><!--
        google_ad_client = "ca-pub-3286208413631803";
        /* Standard MPU */
        google_ad_slot = "8630273973";
        google_ad_width = 300;
        google_ad_height = 250;
        //-->
</script>
<script type="text/javascript"
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

私はもう試した:

var script = document.createElement('script');
script.textContent = 'google_ad_client = 'ca-pub-3286208413631803'; google_ad_slot = '8630273973'; google_ad_width = 300; google_ad_height = 250;';
document.getElementById('divDynamicAdvert').appendChild(script);

var script = document.createElement('script src="http://pagead2.googlesyndication.com/pagead/show_ads.js"');
document.getElementById('divDynamicAdvert').appendChild(script);

スラッシュもエスケープしようとしましたが、うまくいきません...助けてもらえますか?

4

1 に答える 1

1

@slebetman が既に言ったように、うまくいきませんinnerHTML。などではなく DOM 経由でスクリプトを評価しようとしている場合は、 Nodeeval(code)でこれを行います。SCRIPT

var script = document.createElement('script');
script.textContent = 'alert(1)';

document.getElementById('divDynamicAdvert').appendChild(script);
// actually it doesnt matter where you append it

編集

いずれにせよ、SCRIPT NODE を作成し、それを操作します。外部ソースを参照する場合は、スクリプト コンテンツを追加するか、src 属性を追加します。

var script;

// content
script = document.createElement('script')
script.textContent = 'alert(1)'
document.body.appendChild(script);

// google api source
script = document.createElement('script');
script.src = 'ANY_URL';
// -> in this case, same as script.setAttribute('src', 'ANY_URL');

document.body.appendChild(script);

さらに質問がある場合は、コメントでお気軽にお問い合わせください。

于 2013-10-24T21:35:42.643 に答える