1

srcが外部ソースを指すjavascriptタグを動的に追加したいのですが、その結果は他のjavascriptを生成します。そのjavascriptは、サッカーチームのテーブルである外部データを描画します。

私がそれを含めるならば、それはdocument.writeうまくいきます。

<script type="text/javascript">
var everysport_u="http://puff.everysport.com/team_puff_competitiontable_normal_script_52764:0.html";
document.write("<scr"+"ipt type='text/javascript' charset='ISO-8859-1' src='"+everysport_u);
var everysport_r=Math.floor(Math.random()*99999999999);
document.write("?_r="+everysport_r);
document.write("'><\/scr"+"ipt>");
</script>

ただし、DOM操作を使用する場合はそうではありません。

var script = document.createElement('script');
var everysport_r=Math.floor(Math.random()*99999999999);
var everysport_u = "http://puff.everysport.com/team_puff_competitiontable_normal_script_52764:0.html";
script.src = everysport_u;
script.type = 'text/javascript';
document.getElementById('everysport-accordion').appendChild(script);
4

1 に答える 1

2

http://puff.everysport.com/team_puff_competitiontable_normal_script_52764:0.htmlのスクリプトはを使用してdocument.writeいます。を使用するスクリプトdocument.writeは、ページの読み込み中にのみ含めることができます。ページが読み込まdocument.writeれると、期待どおりに機能しなくなります。

それ自体がDOM操作でDOM操作を行うスクリプトを含めることは問題ありません。しかし、問題の事実はdocument.write、ドキュメントがどこにある場合でも、すぐにドキュメントに書き込むことができることを期待しています。ページがロードされた後にしようとするとdocument.write、現在のページがクリアされ、オーバーライドされます。

この簡単な例を確認してください:http://jsbin.com/azumus/1/(そして[更新]を数回クリックします)。

document.writeページの読み込み中にページの上位にある要素を使用するスクリプトを追加すると、はページdocument.writeに書き込みますが、意図した場所には書き込みませんdocument.writeページが現在読み込まれている場所にのみ書き込みます。必要な要素への書き込みには使用できません。

例については、次のページを参照してください:http: //jsbin.com/ayomoz/1/(およびソースを表示)。

要約すれば

<script>ドキュメントに書き込む予定の場所にタグを付けます。idを使用して要素に書き込みたい場合はeverysport-accordion、次のようにする必要があります。

...

<div id="everysport-accordion">
    <script type="text/javascript">
        var everysport_u="http://puff.everysport.com/team_puff_competitiontable_normal_script_52764:0.html";
        document.write("<scr"+"ipt type='text/javascript' charset='ISO-8859-1' src='"+everysport_u);
        var everysport_r=Math.floor(Math.random()*99999999999);
        document.write("?_r="+everysport_r)
        document.write("'><\/scr"+"ipt>");
    </script>
</div>

...
于 2012-11-18T13:27:44.247 に答える