IE 浏览器embed标签src属性为空,不能打开网页

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a0405221/article/details/84970269

前言:今天看到网站在IE上不停的转圈圈(页面基本显示出来了),当时所有的JS都失效了,本着本职工作责任心,开始了找bug之路,但是过程比想象中要艰辛,一开始以为是base标签有问题导致JS加载不到,后来认为是js冲突导致所有js运行失败(又替换了顺序,又替换了好多个JS版本),最后一行一行的删代码,测试,删代码,测试。发现是embed播放器的问题,好在最后解决了问题,上代码!

提出问题

1,页面的数据为js异步加载,所以我把页面上的embed标签src设置为空,加载到数据以后直接set进去。(火狐,chrome,手机都没问题,奇葩的IE!)
在这里插入图片描述
html代码:

<embed src="" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" style="width:100%;height:100%;"></embed>

jquery代码:

$(function(){
$("embed").attr("src","http://www.tudou.com/l/Q0MiBE2DPCs/&bid=05&iid=132813935&resourceId=0_05_05_99/v.swf");
});

2,当src=""时,IE获取到了一个网站前缀(设想一下:src=“video/video.swf”,IE会拿到www.baidu.com/video/video.swf),src为空这个时候IE就拿到了"www.baidu.com",并以这个为视频请求不断发送请求,这也就造成了标签卡一直转圈圈处于加载中。

3,因为我用的是jquery初始化,很多人都知道,jquery的DOM初始化,需要把DOM初始一遍以后才开始执行。而IE中embed的src="",一直加载不出来所以导致页面上所有的初始化都初始不了。
代码:

$(function(){
    //do some thing
});

解决方案:

1,删除页面上的embed标签。
2,JQ添加embed标签,例如:

$("body").append('<embed src="http://www.tudou.com/l/Q0MiBE2DPCs/&bid=05&iid=132813935&resourceId=0_05_05_99/v.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" style="width:100%;height:100%;"></embed>');

3,js添加:

document.getElementById("driveLetter").innerHTML('<embed src="http://www.tudou.com/l/Q0MiBE2DPCs/&bid=05&iid=132813935&resourceId=0_05_05_99/v.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" style="width:100%;height:100%;"></embed>');

花了我一天的时间因为找bug找错方向,认为是JS冲突(实际上控制台没报错),记录下希望帮到遇到问题的他人,至少你可以不用像我花一天时间了。

猜你喜欢

转载自blog.csdn.net/a0405221/article/details/84970269