一个JavaScript函数可以检测哪个Flash DOM对象叫做它?

前端之家收集整理的这篇文章主要介绍了一个JavaScript函数可以检测哪个Flash DOM对象叫做它?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这里有一个挑战:我有一个Flash电影,它将嵌入在一个使用未知DOM ID的页面中,我想在JS函数中能够识别/存储回调.

我的理想用户流程是:

> Flash中的用户点击按钮.
> Flash会暂停任何动画/视频/声音等
Flash会调用一个注入的JS函数显示页面覆盖的覆盖体验.
>当用户关闭重叠体验时,调用Flash对象上的回调方法.
> Flash恢复播放.

问题是,当AS3使用ExternalInterface.call(“functionName”,args …)方法时,似乎没有触发DOM事件,因此不可能知道哪个对象称为JS函数,所以具有“registerMe()”功能似乎不起作用.基本上,注入的JS函数无法确定要调用哪个DOM对象,因为Flash对象的ID是未知的.

[UPDATE]
事实证明,SWF可以使用loaderInfo.url来确定自己的url.我将该信息传递给启动重叠体验的脚本,以便将其存储以便将来与所有应用程序/ x-shockwave-flash DOM对象进行比较.当找到匹配项时,就是调用SWF.有没有人看到这个逻辑的缺陷? (我不像我那样熟练地使用JS)

解决方法

您正在调用JavaScript函数被手动调用,而不是作为事件.就像在JS中使用调用或应用方法一样.

您可以做的是将DOM name/ID of the active flash video作为参数传递给您调用函数,以便知道要引用哪个DOM元素:

ExternalInterface.call( 'functionName',arg1,arg2,...,ExternalInterface.objectID );

使用此方法的一个“getcha”是您需要确保对象和/或嵌入元素同时设置其[id]和[name]属性,因为ExternalInterface.objectID将被不同的浏览器注册.

如果我记得正确的话,IE读取[name]和ff / chrome / opera / safari读取[id],尽管我相信一些浏览器会成功地回退到[name].我需要做一个测试来证实这一点.

无论如何,给出an identical name and id,它应该正常工作(你可以根据ID选择DOM中的元素).

猜你在找的JavaScript相关文章