我有一个非常常见的问题,即在除 IE 之外的所有浏览器上运行的 javascript 片段(使用 Windows 7 附带的版本,今天明确安装并仔细检查了 Flash)。为了避免此类问题,我已经选择使用最新的 SWFObject.js,但显然这还不够。请随时检查自己:
请注意,您会看到脚本 data-cfasync 语句来阻止 Cloudflare 的 JS 优化。它们不会影响结果(我在有和没有它们的情况下进行了测试,并禁用了 CF 的 RocketLoader)。
以下是我的一些尝试:
第一个示例适用于除 IE 之外的所有浏览器:
<script data-cfasync="false" type="text/javascript" src="/wiki/extensions/fwbanner/js/swfobject.js"></script>
<script data-cfasync="false" type="text/javascript">
var flashvars = {};
var params = {};
var attributes = {};
attributes.id = "fwbanner-id";
attributes.class = "fwbanner-class";
swfobject.embedSWF("http://www.fleurworld.com/static/media/images/banners/fw_wk_banner_en.swf", "fwbanner-div", "850", "85", "9.0.0", "/wiki/extensions/fwbanner/js/expressInstall.swf", flashvars, params, attributes);
</script>
第二个示例使用了我在 Stack Overflow 上阅读的建议,即获取元素 ID 而不是显式指示它。它仍然适用于除 IE 之外的所有浏览器。
<script data-cfasync="false" type="text/javascript" src="/wiki/extensions/fwbanner/js/swfobject.js"></script>
<script data-cfasync="false" type="text/javascript">
var flashvars = {};
var params = {};
var attributes = {};
attributes.id = document.getElementById("fwbanner-id");
attributes.class = "fwbanner-class";
swfobject.embedSWF("http://www.fleurworld.com/static/media/images/banners/fw_wk_banner_en.swf", "fwbanner-div", "850", "85", "9.0.0", "/wiki/extensions/fwbanner/js/expressInstall.swf", flashvars, params, attributes);
</script>
这第三个片段根本不起作用(在任何浏览器中): IE 中的 document.getElementById("fwbanner-id") 返回 null 但放置 onload() 仍然无法修复它。我想看看是否延迟元素 ID 检索直到 DOM 被加载会有所帮助。好像没有。
<script data-cfasync="false" type="text/javascript" src="/wiki/extensions/fwbanner/js/swfobject.js"></script>
<script data-cfasync="false" type="text/javascript">
window.onload = function ShowBanner() {
var flashvars = {};
var params = {};
var attributes = {};
attributes.id = document.getElementById("fwbanner-id");
attributes.class = "fwbanner-class";
swfobject.embedSWF("http://www.fleurworld.com/static/media/images/banners/fw_wk_banner_en.swf", "fwbanner-div", "850", "85", "9.0.0", "/wiki/extensions/fwbanner/js/expressInstall.swf", flashvars, params, attributes);
}
</script>
任何帮助或指示将不胜感激!