【问题标题】:Can an embedded Flash object access the DOM of its parent document?嵌入式 Flash 对象可以访问其父文档的 DOM 吗?
【发布时间】:2010-03-18 20:12:22
【问题描述】:

我只是好奇 Flash 对象是否有可能访问嵌入它的文档的 DOM。

【问题讨论】:

    标签: javascript flash dom


    【解决方案1】:

    是的,通过 ExternalInterface 类。

    您可以从 Flash 电影中调用 Javascript,并取回您想要的有关页面的任何公共信息。

    附录

    一年半后看到这个,我决定添加一些例子:

    假设您的客户端页面上有这样的 JS 函数:

    function foo(bar,type) {
      // do something with bar and type
    }
    

    您可以像这样从 Flash(使用 AS3)调用它:

    ExternalInterface.call(foo, bar, type);
    

    请注意,函数名称是第一个对象,参数在其后按顺序列出。

    要将 Flash 电影的方法公开给外部 Javascript,您可以在 Flash 或 Flex(同样是 AS3)中执行此操作:

    application1_applicationCompleteHandler(event:Event) {
      // the app has finished loading, so do whatever we
      // have to do on load, plus add that callback
      ExternalInterface.addCallback(foo, bar);
    }
    
    public function bar(arg1, arg2) : void {
      // do something with arg1 and arg2
    }
    

    在页面上的 Javascript 中,您可以这样调用它(其中 myMovie 是 SWF 的 ID):

    myMovie.foo(anArg, anotherArg);
    

    addCallback 方法中,第一个参数是函数的外部名称,第二个参数是要调用的闭包。

    【讨论】:

    • 从 dom 对象获取属性怎么样?示例:<div data-url="http://google.com"></div>?如何获取数据属性?
    【解决方案2】:

    【讨论】:

    • 据我了解,该示例仅适用于 AIR 应用程序,不能在常规 Web 浏览器中使用。因此,建议使用 ExternalInterface 的其他答案可能更合适,除非 devviedev 正在开发 AIR 应用程序。
    【解决方案3】:

    据我所知,他们可以在包含的文档中执行 javascript,然后显然可以访问 DOM 本身。

    【讨论】:

    • 如果我在父文档中有一些 AJAX 调用,我能以某种方式与 Flash 对象通信吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2017-03-05
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多