在某个方案中,需求是点击 HTML 页面上的 button 便会以 BlockUI 方式显示一个包含 SWF 动画的 DIV 出来,点击 SWF 上的叉叉可隐藏此 DIV,若使用者再次点击 HTML button,该 DIV 又会显示出来并且从头再播放 SWF 动画。
在 Chrome 以及 Firefox 浏览器上都可以达到上述需求,但到了 IE浏览器上,隐藏 DIV 后再显示,其中的 SWF 似乎并不会被重新载入,因此会停留在上次播放的最后一格,尚不知这是 IE 对于 Flash 的 Bug 或这才是正常的,经过一番讨论跟摸索后试出了解决方法。
当然也可以采用 JavaScript 呼叫 SWF 中的重新播放事件来解决,但此次并不是采用此方法解决。
下面是范例原始 HTML(节录):
ieFans.net
播放动画
接著,要将使用 SWFObject 嵌入 SWF 播放事件的 JavaScript 写成一个 Function:
function showSwf() {
var flashvars = { };
var params = {};
params.wmode = "transparent";
params.menu = "true";
params.quality = "high";
var attributes = {id:"FlashID",name:"FlashID"};
swfobject.embedSWF("flash.swf", "swfcontent", "698", "608", "10.0.0","expressInstall.swf", flashvars, params, attributes);
}
思路大概是这样的:
开啟:页面载入后,嵌入 SWF 播放事件(CSS 中此事件是隐藏的)到 swf DIV 中,当使用者点击播放动画按钮后,以 BlockUI 方式显示 swf DIV。
关闭:点击 SWF 中的关闭按钮,呼叫关闭 BlockUI 的 Close JavaScript 事件,关闭 swf DIV,此时也移除掉嵌入的 swfobject 播放事件,并再次嵌入(以确保IE浏览器可以重新播放)。
依此思路,写出了第一版的解决方案:
ieFans.net
播放动画
但是很诡异的事情,依然发生在 IE 上,在这样开开关关几次 DIV 后,有时 SWF 动画就会卡住不动,但用滑鼠在 SWF 上点几下,又或是等个几秒它又自己开始动起来 …
看起来得针对IE浏览器做特别做处理了。
最后跟同事讨论出的最终解决方案 Code 如下:
ieFans.net
播放动画
也许用了笨方法来解决,先记下此次解法,有时间再来研究为什么会有这些问题吧!
via:http://patw.idv.tw/blog/
标签:IE相关IE浏览器flashJavaScript