9

外部 JavaScript ファイルを動的に HTML 要素に読み込んで、広告タグをプレビューしようとしています。スクリプトがロードされて実行されますが、スクリプトには「document.write」が含まれており、適切に実行するのに問題がありますが、エラーはありません。

<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
        <script type="text/javascript">
        $(function() {
            source = 'http://ib.adnxs.com/ttj?id=555281';

            // DOM Insert Approach
            // -----------------------------------
            var script = document.createElement('script');
                script.setAttribute('type', 'text/javascript');
                script.setAttribute('src', source);

            document.body.appendChild(script);
        });
        </script>
    </head>

<body>
</body>
</html>

私はそれを動作させることができます

  1. テストのためにソースを同じドメインに移動すると
  2. 上記のコードのように、document.write の代わりに document.createElement と appendChild を使用するようにスクリプトが変更された場合。

サードパーティによって生成およびホストされているため、スクリプトを変更することはできません。

document.write が正しく動作しない理由を知っている人はいますか? そして、これを回避する方法はありますか?

助けてくれてありがとう!

4

4 に答える 4

0

私は同じ問題を抱えていて、解決策を思いつきました。私のレイアウトはdom-readyの後にクライアント側で生成されるため、私のものはもう少し複雑だと思います。つまり、スクリプトをそのようにインクルードすることはできません。これにより、追加の手順が追加されましたが、レイアウトがサーバー側で生成される場合は、追加の手順ではない可能性があります。

  1. URL を生成します。あなたの場合、それはajaxリクエストから、私の場合、それはユーザーの相互作用からです
  2. この URL でページをリロードします (おそらく、新しく作成されたフォームで URL をサーバーに POST します)。

スクリプト インクルードをサーバー上の適切な場所にレンダリングできる場合は、それを実行すれば完了です。さもないと:

  1. 非表示で特定の ID を持つ div をサーバー側に作成します。これにより、スクリプト pre dom-ready がロードされ、document.write が適切に起動されます。
  2. スクリプトを含む div の内容をスクレイプすると、変数に html が含まれるようになり、ページのどこにでも配置できます。
于 2014-12-08T01:22:12.850 に答える
0

あなたはしたくない DOMの準備ができているとき)document.write$(function()

document .readyラッパーを取り外します。

そして、 to - before に移動し</body>ます。(またはコンテナーの場所 - ウィジェットを表示する場所)。

それで :

<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
    </head>

<body>

//bla bla...

<script type="text/javascript">

  (function (){

           var source = 'http://ib.adnxs.com/ttj?id=555281';

            // DOM Insert Approach
            // -----------------------------------
            var script = document.createElement('script');
                script.setAttribute('type', 'text/javascript');
                script.setAttribute('src', source);
                document.body.appendChild(script);
   })();

</script>
</body>
</html>

重要 :

ここに画像の説明を入力

于 2013-11-04T15:42:19.187 に答える