gpt4 book ai didi

javascript - flash:ExternalInterface 适用于嵌入标签,但不适用于对象标签

转载 作者:搜寻专家 更新时间:2023-11-01 04:20:07 24 4
gpt4 key购买 nike

根据 Adob​​e 的说法,嵌入 Flash 对象的“现代”更新方式:

        <object id="theFlash" name="theFlash" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" 
width="400" height="225" align="middle">
<param name="movie" value="theflashfile.swf" />
<param name="allowScriptAccess" value="always" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash"
data="getStreamFrame.swf" width="400" height="225">
<param name="allowScriptAccess" value="always" />
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflash">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
</a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>

当尝试从 Javascript 调用 SWF 中的 AS3 函数时:

     var flashObj = document.getElementById('theFlash');
flashObj.someASFunction();

(以及在 AS 端:)

     import flash.external.*;
function someASFunction() {
//show some text
}
ExternalInterface.addCallback("someASFunction", someASFunction);

这在 Firefox 和 Chrome 中有效。闪光灯工作并加载。 flashObj 确实获得了对该对象的引用,但 someASFunction 未定义且未被调用。

如果我用嵌入标签替换对象标签:

   <embed id="theFlash" name="theFlash" height="225" width="400" align="middle" 
type="application/x-shockwave-flash" allowscriptaccess="always"
src="theflashfile.swf" />

然后它在 Firefox 和 Chrome 上工作(调用 AS 函数并正常工作)-(但它在 IE 中不起作用)。

为什么它不适用于对象标签?
使用嵌入标签而不是对象标签有多“安全”?不是过时了吗?

请注意,这绝对不是时间问题 - 如果我从 JS 从 onclick 函数调用 AS 函数 - 那么结果是相同的。

最佳答案

当使用推荐的 Adob​​e 方法时,我也无法在 FF 和 Chrome 中定位 flashmovie。我最终使用了以下代码,ExternalInterface 在所有浏览器中都运行良好

    <div id="flashContent">

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="619" height="99" id="myFlashMovie" align="middle">
<param name="movie" value="myFlashMovie.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#f2f2f2" />
<param name="allowScriptAccess" value="sameDomain" />
<!--[if !IE]>-->
<embed src="myFlashMovie.swf" quality="high" bgcolor="#f2f2f2"
width="619" height="99" name="myFlashMovie" align="middle"
play="true" loop="true" quality="high" allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer">
</embed>
<!--<![endif]-->
</object>

为了定位 flash 电影,我使用了这个 java 脚本

        function sendDataToFlash(data) {

getFlashMovie("myFlashMovie").myCallbackInFlash(data);

}

function getFlashMovie(movieName) {
var isIE = navigator.appName.indexOf("Microsoft") != -1;
if(isIE) return window[movieName];
else return document[movieName];

}

关于javascript - flash:ExternalInterface 适用于嵌入标签,但不适用于对象标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7474388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com