1

JavaScriptでページサイズをチェックし、関連する広告コードを画面に出力することで、基本的に「レスポンシブ」広告を表示できるソフトウェアのアドオンを作成中です。

これはテキスト広告コードでは問題なく機能しますが、広告コードが JavaScript の場合に問題が発生しました。ユーザーが提供した JavaScript をページに出力して実行することはできません。

これはまったく可能ですか?

コード例を次に示します。

<div id="admanagerresponsive">
    <script type="text/javascript">
      adUnit = document.getElementById("admanagerresponsive");
      adWidth  = adUnit.offsetWidth;

      if (adWidth >= 728) {
        <output ad code>
      }
    </script>
</div>

上記のコードはページに直接表示されます。

そのようなことは可能ですか?

編集:

アドセンスなど、任意の広告主のコードである可能性があります。これはユーザーが提供し、標準の html になります。ただし、タグを含めることができ、これらを正しくレンダリングして出力する必要があります...

4

2 に答える 2

0

タグを含む HTML コードを挿入する必要があり、セキュリティ上の問題がある場合は、後で追加されたタグscriptを実行する際のクロス ブラウザーの問題を処理する jQuery などのライブラリを使用することをお勧めします。<script>

さらに、次のようなさまざまな落とし穴に注意する必要があります
。Html のペアリングはスクリプトの解析の前に行われるため、どこに a</script>が表示されても、すぐにスクリプトが終了します。

例は、そのコードを HTML ページ内のインライン スクリプトとして使用する場合に重要です。

例 1:

<script>
      adUnit   = document.getElementById("admanagerresponsive");
      adWidth  = adUnit.offsetWidth;if (adWidth >= 728) {
           // if you add </script> <b>this is visible as html</b> and everything below is not script anymore
      }
</script>

例 2:

<script>
      adUnit   = document.getElementById("admanagerresponsive");
      adWidth  = adUnit.offsetWidth;if (adWidth >= 728) {
           var string = "<script> var test;</script>";//the same problem here everything behind the closing script tag is html and not script anymore
      }
</script>

したがって、そこに挿入するスクリプトが必要な場合は</script>、html パーサーによって検出されないようにする必要があります。

<script>
      adUnit   = document.getElementById("admanagerresponsive");
      adWidth  = adUnit.offsetWidth;if (adWidth >= 728) {
           var string = "<script> var test;</sc"+"ript>";//that way the html parser does not detect the closing script tag
      }
</script>

より良い解決策は、インライン スクリプトをまったく使用しないことです。これは、その理由だけでなく、css、js、および html を常に分離しておく必要があるためです。

于 2013-09-14T16:55:41.480 に答える
0

それを2つのアイデアに分けてください。上記の HTML から、別の場所に記述した js 関数を呼び出すだけです。最初にそのjs関数をアラートにして、それが機能することを確認します。

それが機能すると、問題が発生します: ページのカスタム js を取得するにはどうすればよいですか? その答えは、HTML ファイルを作成するのと同じ方法で (1 回限りのカスタム) js ファイルを作成してロードできることです。または、now.js などのライブラリが役立ちます。または、js を組み込む方法を理解している HTML ページのスクリプト部分があります。

すべてのサイズの可能性をプリロードしてから、最初の段落の js ルーチンで呼び出す適切なルーチンを選択することもできます。

于 2013-09-14T17:00:37.353 に答える