0

我正在努力实现以下目标:

我有一个获取两个 Flash 对象的 javascript 对象。然后将两个 Flash 对象添加到页面中,第一个我设置为 play=true,第二个我设置为 play=false。

我在下载后立即展示一个带有 play=true 的内容,并将另一个带有 play=false 的内容放在一个隐藏的容器中。

当我按下第一个它与我的 javacsript 交互时,js 代码会隐藏第一个 flash div 容器并更改要显示的第二个 flash(隐藏的)div 容器。

完成后,我还将这个 flash 的 play 属性从 false 更改为 true,以便它开始播放。这两个动作,改变 DOM 可见性和改变 play 属性为 true,是在两个不同的 setTimeout 函数中完成的(设计约束!)。

我遇到的问题是,在 WIN8 上的 IE10 上,flash 对象不遵守播放命令。为了更准确地处理我的操作,我正在使用: 获取 flash obj var myObj = document.getElementById("MY_OBJ_ID"),然后我尝试通过myObj.Play();使用 flash 暴露的标准 Play() 方法将 play 设置为 true。当然,我在执行 Play() 之前检查对象是否存在。

此外,在我按下第一个闪光灯后,假设将上述所有内容设置为运动,并且没有任何反应......如果我在控制台中手动编写相同的行:

var myObj = document.getElementById("MY_OBJ_ID");
myObj.Play();

然后电影播放,一切正常。

我再提一下,这种情况只发生在 WIN8 的 IE10 上。我将不胜感激在这个问题上的任何帮助,我对此感到沮丧,无法弄清楚。

更新 - 30/06:

我想我有点想通了,这出戏确实没有上演。在 IE 10 中,您可以使用flashObj.Playing属性查询 flash obj,我看到它返回 false。在这种情况下,我只需使用 setTimeout 调用该函数,并且每次都检查属性状态,直到它为真。但是我看到这个属性在其他浏览器中无效,并且在所有浏览器中都有另一个 API 函数 - flashObj.IsPlaying().

是否有一个跨浏览器实现可以让我检查 Flash 对象是否处于播放状态?让我们这样说:

flashObj.TGetPropertyAsNumber("/", 4) >= 1) || flashObj["IsPlaying"]()

它将检查第一帧甚至更多帧是否已经播放,或者检查“IsPlaying”是否返回 true?

更新 - 01/07:嗯,上述方法被证明在所有浏览器上都能正常工作,所以我的问题在一定程度上得到了解决。为了知道 Flash 播放器是否已加载,我需要执行上述检查,如果 Flash 未加载,我会调用我使用的函数来使用 setTimeout 再次设置播放。

但我仍然对 IE10 对 WIN8 行为感到困惑。我不明白为什么flashObj.Play()我第一次调用它时在所有浏览器上第一次工作,而在 IE10 中我需要执行 setTimeout 才能使其工作。

4

0 回答 0