使用 jquery 的 AS3 ExternalInterface 调用

Posted

技术标签:

【中文标题】使用 jquery 的 AS3 ExternalInterface 调用【英文标题】:AS3 ExternalInterface call using jquery 【发布时间】:2010-12-24 00:46:00 【问题描述】:

我正在使用 ExternalInterface 调用嵌入在 html 页面中的 Flash 应用程序。 以下代码可以正常工作(我正在使用按钮进行测试):

$(document).ready(function()
    $("#button").click(function()
        var app = document.getElementById('ApplicationID')
        console.debug(app)
        app.pageUnloading()
    )
)

所以这可以很好地调用 Flash 应用程序并打印:

<embed id="ApplicationID"   align="middle" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" allowscriptaccess="sameDomain" name="FlexMoeders" bgcolor="#cccccc" quality="high" src="ApplicationID.swf">

但是当我使用 jquery $# 方法通过 id 获取元素时,我收到了一个不同的对象:

$(document).ready(function()
    $("#button").click(function()
        var app = $("#ApplicationID")
        console.debug(app)
        app.pageUnloading()
    )
)

当我使用这个时,我被告知:

app.pageUnloaded is not a function

并打印以下内容:

[embed#ApplicationID] 

我也试过了:

var app = $("#ApplicationID").val()

var app = $("#ApplicationID").get(0)

但仍然没有成功。有人在这里有什么想法吗?

【问题讨论】:

你有展示这个的示例页面吗? .get(0) 为我工作 【参考方案1】:
var app = $('#ApplicationID')[0] 

var app = $('#ApplicationID').get(0)

应该和

做同样的事情
var app = document.getElementById('ApplicationID')

【讨论】:

我的 .get(0) 不好,它确实有效,但我调用了错误的函数【参考方案2】:

当你使用$("#ApplicationID") 时,你会得到一个 jQuery 对象。

这就是它不起作用的原因。但是$("#ApplicationID").get(0) 实际上应该可以工作。

【讨论】:

以上是关于使用 jquery 的 AS3 ExternalInterface 调用的主要内容,如果未能解决你的问题,请参考以下文章

如何设置和使用 Flash AS3 文件

jQuery触发文件输入

jQuery--属性选择器

ActionScript 3 AS3:使用SWFObject2和AS3传递变量

AS3 - 使用 playHeadTime 记录点击并使用时间

AS3:我的 AIR 应用程序应该使用啥 resolvePath?