我用php给html页面传参数content,content里面包括js脚本的,之前有老大指导,我在html判断,如果是IE,直接将<script>替换成<script defer>。如果是其他浏览器,就抽取出来。结果,IE可以显示正常。但是发现用其他浏览器的话,这个js却是跳着来显示的。
html判断是其他浏览器的抽取代码如下:
resText1.innerHTML=s;
var scripts = resText1.getElementsByTagName("script");
for(var i=0;i<scripts.length;i++){
eval(scripts[i].innerHTML);php的content如下:
$content = "
<div id='test1' class='06'>
<script>showtime(1,4000);</script>
</div>
<div id='test2' class='11'>
<script>showtime(2,4300);</script>
</div>
<div id='test3' class='20'>
<script>showtime(3,4800);</script>
</div>
<div id='test4' class='26'>
<script>showtime(4,5200);</script>
</div>
<div id='test5' class='40'>
<script>showtime(5,6000);</script>
</div>
"
;我发现如果把js的eval换成alert的话,是可以弹出所有的showtime的。但是如果换成eval的话,就只会执行第1、3、5条js我彻底无语了。后来在eval(scripts[i].innerHTML);前面又加上了一句eval(scripts[i+1].innerHTML);结果就显示四条结果。分别为1、2、4、5条记录。。我彻底无语了谁能告诉我一下到底发生什么事了么?
html判断是其他浏览器的抽取代码如下:
resText1.innerHTML=s;
var scripts = resText1.getElementsByTagName("script");
for(var i=0;i<scripts.length;i++){
eval(scripts[i].innerHTML);php的content如下:
$content = "
<div id='test1' class='06'>
<script>showtime(1,4000);</script>
</div>
<div id='test2' class='11'>
<script>showtime(2,4300);</script>
</div>
<div id='test3' class='20'>
<script>showtime(3,4800);</script>
</div>
<div id='test4' class='26'>
<script>showtime(4,5200);</script>
</div>
<div id='test5' class='40'>
<script>showtime(5,6000);</script>
</div>
"
;我发现如果把js的eval换成alert的话,是可以弹出所有的showtime的。但是如果换成eval的话,就只会执行第1、3、5条js我彻底无语了。后来在eval(scripts[i].innerHTML);前面又加上了一句eval(scripts[i+1].innerHTML);结果就显示四条结果。分别为1、2、4、5条记录。。我彻底无语了谁能告诉我一下到底发生什么事了么?
换成这种试试
eval('('+scripts[i].innerHTML+')');