尝试了4个小时来解决这个问题。 我有一个非常奇怪的问题:除了IE之外,SWFObject在所有浏览器中都嵌入了flash。 我将每个输出div的HTML打印到textarea中,发现在IE中,SWFObject只嵌入了根“object”标签,没有任何内部标签(例如param name =“movie”value =“myVal”),所以我想这就是为什么我在IE中获得“未加载电影”的原因。
我的代码如下:
window.embedFlash=function (properties)
{
swfobject.addDomLoadEvent(function ()
{
swfobject.createSWF(
{
data: properties.data,
width: properties.width||'100%',
height: properties.height||'100%'
},
{
allowScriptAccess: 'always',
allowFullScreen: 'true',
allowNetworking: properties.allowNetworking||'all',
flashvars: properties.flashvars||null,
wmode: properties.wmode||null,
menu: properties.menu||'false'
},properties.id);
});
};
答案 0 :(得分:0)
通常“未加载电影”表示Flash Player AVM实例已启动,但无法找到您提供的URL。 此外,您的SWF版本可能与IE中的Flash Player版本不同步。
检查是否有任何404,并检查编译的SWF版本是否可以在安装到IE的FP版本中运行。
答案 1 :(得分:0)
您基本上正在重新创建swfobject.embedSWF
方法,因此我建议您重新格式化代码以使用swfobject.embedSWF
,因为它得到广泛支持并经过严格测试。我在代码和embedSWF
之间看到的唯一区别是:
swfobject.embedSWF
默认情况下会在domload上调用,因此您不需要编写ondomload处理程序这是对代码的快速重新格式化。如果您的flashvars以字符串形式发送,它将失败:
window.embedFlash=function (properties)
{
var flashvars = properties.flashvars||false;
var params = {
allowFullScreen: 'true',
allowNetworking: properties.allowNetworking||'all',
allowScriptAccess: 'always',
menu: properties.menu||'false',
wmode: properties.wmode||"window"
};
var attributes = {};
swfobject.embedSWF(properties.data,
properties.id,
properties.width||'100%',
properties.height||'100%',
"9",
false,//URL for expressinstall, if available
flashvars,
params,
attributes);
};