SetVariable适用于FireFox,但不适用于Internet Explorer?

时间:2011-07-12 20:53:40

标签: javascript flash internet-explorer actionscript cross-browser

我正在构建一个视频播放器网络应用程序,它使用flash进行播放,jquery / javascript用于UI。通过编写flash组件的人的设计,我需要使用setVariable来在javascript和flash播放器之间进行通信。我在互联网上看到很多人都遇到过问题,因为他们在FireFox上工作。我在firefox中设计了我的应用程序,因为我想用firebug来帮助我开发。既然已经构建了整个东西,我发现setVariable在IE中不起作用。我得到的错误是: Object不支持属性或方法'SetVariable';

以下是相关代码:

我通过javascript构建我的html,所以这就是我构建播放器的方式:

var player =
'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,16,0" width="1" height="1" >' +
'<param name="movie" value="/flash/Player.swf?server='+server+'">' +
'<param name="quality" value="high">' +
'<param name="play" value="true">' +
'<param name="LOOP" value="false">' +
'<param name="wmode" value="transparent">' +
'<embed wmode="transparent" src="/flash/Player.swf?server='+server+'" width="1" height="1" play="true" loop="false" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>' +
'</object>'; 

将其追加到页面后,我调用set variable:

that.player.SetVariable('track',trackNo);

任何建议都将不胜感激。我知道外部接口是交叉js flash公报的首选方法,但我无法访问flash文件,也无法更改它,所以请仅使用setVariable提供解决方案。谢谢。

1 个答案:

答案 0 :(得分:2)

您需要知道的是,为了某些浏览器,您必须编写嵌入swf文件的html代码是不同的。

Firefox和其他基于Netscape的浏览器使用<object>标记,而IE使用<embed>标记。

您可以使用SWFObject将swf嵌入页面 它是一个单文件的开源库,可以为您处理所有跨浏览器的Flash嵌入怪癖 它甚至附带a handy generator,可以帮助您制作正确的嵌入代码以供库使用。

然后,您可以从DOM树中通过id检索swf,并将变量设置在正确的对象上。

此外,您应该检查是否可以使用FlashVars代替SetVariable()

干杯