我有以下 javascript 代码(在底部),我从他们发布的网站为客户的每个 api 调用注入这些代码。
客户端在其网页中进行脚本标记调用,例如:
<div id="myDivID"/>
<script type="text/javascript" src="http//:srv.ab.com/api/getswf?divIdToReplace=myDivID"></script>
一旦执行了以下代码,就会从 api 调用中注入以下代码,并将 div 替换为 swf:
<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。