【发布时间】:2011-03-01 20:26:15
【问题描述】:
我正在尝试创建一个包含 Flash 播放器的叠加层,当用户单击链接时会显示该播放器。包含播放器的 div 在 CSS 中以 display:none 开头。点击后会显示 div,JS 会使用 ExternalInterface 来配置和启动播放器。 JS 在捕捉到“Flash 就绪”事件时配置播放器,该事件由 Flash 在ADDED_TO_STAGE 上触发。
除了永远不会创建 ExternalInterface 回调之外,所有这些都有效。如果播放器在页面加载时显示,或者使用visibility:hidden 而不是display:none 隐藏,则JS 和AS3 可以正常工作。我知道that Flash will not be initialized with display:none,这按预期工作:当 Flash 未隐藏时,它会触发其事件并正确初始化其他所有内容(例如 GUI、其他内部内容)。唯一没有按预期发生的是未添加我的 ExternalInterface 回调。
ExternalInterface.available 是真的。这不是时间问题,因为即使在几分钟后回调仍然不存在。最奇怪的是,flash 能够调用 JS,很好地触发 JS 事件,并且触发事件的代码在添加回调的代码之后。任何 AS3 代码都不会引发错误。我在 Chrome 和 Firefox 中都看到了这个问题。
FWIW,由于一些不寻常的要求,我直接编码嵌入 HTML 而不是使用 SWFObject。
有人遇到过display:none 和 ExternalInterface 的此类问题吗?
谢谢!
【问题讨论】:
-
另外,我已经尝试按照here 的描述设置
wmode。没有改变任何东西。 -
你能发布你的代码吗?这可能是在考虑 DOM 之前触发事件的问题,等等。
标签: javascript html css flash actionscript-3