为swf注入javascript不会在IE中显示,但在Chrome / FF中显示

时间:2012-10-23 03:45:38

标签: javascript flash

我有以下javascript代码(在底部),我从他们发布的网站为客户注入每个api呼叫。

其网页中的客户端会调用脚本标记,例如:

<div id="myDivID"/>
<script type="text/javascript" src="http//:srv.ab.com/api/getswf?divIdToReplace=myDivID"></script>

执行该操作后,将从api调用中注入以下代码并用swf替换div:

<script type="text/javascript">

        (function () {

            var object = document.createElement('object');
            object.setAttribute('width', '300');
            object.setAttribute('height', '250');
            object.setAttribute('classid', 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000');

            var param1 = document.createElement('param');
            param1.setAttribute('name', 'movie');
            param1.setAttribute('value', 'http://srv.ab.com/test.swf');

            var embed = document.createElement('embed');
            embed.setAttribute('src', 'http://srv.ab.com/test.swf');
            embed.setAttribute('width', '300');
            embed.setAttribute('height', '250');

            var param2 = document.createElement('param');
            param2.setAttribute('name', 'wmode');
            param2.setAttribute('value', 'transparent');

            object.appendChild(param1);
            object.appendChild(embed); // <-- Invalid argument for IE9!!!
            object.appendChild(param2);

            var container = document.getElementById('myDivID');
            while (container.firstChild) { container.removeChild(container.firstChild); }
            container.appendChild(object);
        })();

</script>

但是,swf不会在IE9中显示,但在Chrome和FF中呈现得很好。

有一点需要注意的是,IE9中的无效参数错误仅在我在下面的脚本中调用的控制台中。

我在这里缺少什么?我不能使用jquery / swfobject,因为它必须是我注入客户端页面的普通javascript。

1 个答案:

答案 0 :(得分:0)

原来IE将某些内部网/互联网站点设置为Quirks模式。这导致IE9使用IE6 javascript行为和IE7 DOM操作。

在标题中添加以下元数据可以缓解这一点:

<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>

但是,从api传送解决方案中,可以在响应中设置X-UA-Compatible标头,其值为IE = edge。