1

我想动态添加一个 javascript 标记,其 src 指向外部源,其结果将生成一些其他 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 回答