火狐浏览器flash 扩展我的外部接口有问题(

发布于 2024-11-02 11:00:25 字数 687 浏览 6 评论 0原文

我如何与我的 Flash 应用程序通信?我加载到我的扩展闪存中 在 mac os 和 firefox 上有些这样的

myDiv.innerHTML = <object…><param allowScriptAsses… etc … 
flash load fine !!! now, i trace my externalInterface method 
var flashObject = document.get…("myFlash")
alert(flashObject) <- okey - [embedHtmlObject … 
alert(flashObject.myExternalMethod) <- native function its okey !!! 
try excute 
flashObject.myExternalMethod() and NOTHING !!! ((( externalMEthod not invoked !!! this problem ONLY on windows 7 in fireFox ! 

我使用wrappedObject和externalInterface工作得很好!但如果我尝试在 Windows 系统上使用wrappedObject - 我有错误(((

我如何在 Firefox 中的 Windows 上正确使用ExternalInterface?

how i can communicate with my flash app ? i load in my extension flash
some like this

myDiv.innerHTML = <object…><param allowScriptAsses… etc … 
flash load fine !!! now, i trace my externalInterface method 
var flashObject = document.get…("myFlash")
alert(flashObject) <- okey - [embedHtmlObject … 
alert(flashObject.myExternalMethod) <- native function its okey !!! 
try excute 
flashObject.myExternalMethod() and NOTHING !!! ((( externalMEthod not invoked !!! this problem ONLY on windows 7 in fireFox ! 

on mac os and firefox i use wrapedObject and externalInterface work fine ! but if i try use wrapedObject on windows system - i have error (((

HOW i can use ExternalInterface on windows in firefox correctly ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暖风昔人 2024-11-09 11:00:25

首先,您需要向 ActionScript 代码添加回调:

flash.external.ExternalInterface.addCallback("myExternalMethod", doSomething);

function doSomething():void
{
//your code
}

如果您使用 swfObject 嵌入 Flash 影片,则可以使用 swfobject.getObjectById 来检测您的 swf 并调用您的方法。

swfobject.getObjectById("myFlash").myExternalMethod();

如果您不使用 swfObject,只需在 JS 代码上复制并粘贴 getObjectById 方法:

function getObjectById(objectIdStr) {
        var r = null;
        var o = getElementById(objectIdStr);
        if (o && o.nodeName == "OBJECT") {
            if (typeof o.SetVariable != UNDEF) {
                r = o;
            }
            else {
                var n = o.getElementsByTagName(OBJECT)[0];
                if (n) {
                    r = n;
                }
            }
        }
        return r;
    }

并通过执行以下操作来调用它:

getObjectById("myFlash").myExternalMethod();

看看这个,我实际上在我的博客上编写了一个小示例: http://www.nelsond8.com/?p=515

First you need to add a callback to your ActionScript code:

flash.external.ExternalInterface.addCallback("myExternalMethod", doSomething);

function doSomething():void
{
//your code
}

If you are using swfObject to embed your flash movie you can use swfobject.getObjectById to detect your swf and call your methods.

swfobject.getObjectById("myFlash").myExternalMethod();

If you are not using swfObject just copy and past the getObjectById method on your JS code:

function getObjectById(objectIdStr) {
        var r = null;
        var o = getElementById(objectIdStr);
        if (o && o.nodeName == "OBJECT") {
            if (typeof o.SetVariable != UNDEF) {
                r = o;
            }
            else {
                var n = o.getElementsByTagName(OBJECT)[0];
                if (n) {
                    r = n;
                }
            }
        }
        return r;
    }

And call it by doing:

getObjectById("myFlash").myExternalMethod();

Have a look on this, I actually code a small example on my blog: http://www.nelsond8.com/?p=515

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文