本文探讨在IE浏览器中通过动态加载JavaScript文件来隐藏Flash激活框的技术细节。重点分析了script元素创建、src赋值与DOM插入head的顺序对结果的影响。实验表明,必须先为script对象的src属性赋值,再将其追加到页面中,才能成功欺骗IE不显示激活框;若先插入再赋值,则无法达到预期效果。
动态加载JS与Flash激活框的关系
众所周知,在网页中引入JavaScript文件并通过脚本控制Flash的HTML代码输出,是一种简单的欺骗IE浏览器、避免显示Flash激活框的方法。然而,当脚本采用动态加载方式时,会出现两种不同的执行结果,具体见以下代码示例。
程序代码
var s = docuemnt.createElement("script");
s.src = src;
docuemnt.getElementsByTagName("head")[0].appendChild(s);
程序代码
var s = docuemnt.createElement("script");
docuemnt.getElementsByTagName("head")[0].appendChild(s);
s.src = src;
从表面看,这两段代码的执行结果似乎相近。但其中一种写法无法成功欺骗IE,导致引入的JavaScript输出的Flash内容依然会触发激活框。
这两段代码唯一的区别在于操作顺序:是先给script对象的src属性赋值再将其追加到head元素中,还是先追加到head再赋值src。经过实验验证,只有先为script的src属性赋值,随后再将其追加到页面上,才能成功欺骗IE浏览器,避免显示Flash激活框。