gpt4 book ai didi

javascript - 引用使 ExternalInterface.call 调用 javascript 函数的 html 对象

转载 作者:行者123 更新时间:2023-11-30 13:31:46 25 4
gpt4 key购买 nike

如果我的术语不对,我深表歉意,我的 actionscript 技能很弱。

所以,我有一些 ActionScript 可以制作一个

ExternalInterface.call('someFunction');

打电话。

是否可以使用 ExternalInterface.call 调用直接引用调用 someFunction 的 html 对象?

假设进行调用的对象也有一些可通过 javascript 访问的回调(通过 ExternalInterface.addCallback)。

目前:

Actionscript source

ExternalInterface.call("someFunction");
ExternalInterface.addCallback("someCallback",someASfunction);

Javascript source

function someFunction(){
document.getElementById('idOfSWFObject').someCallback();
}

我认为必须有一种方法:

Actionscript source

ExternalInterface.call("someFunction",THE_OBJECT_MAKING_THE_CALL);
ExternalInterface.addCallback("someCallback",someASfunction);

Javascript source

function someFunction(o){
o.someCallback();
}

再次对术语感到抱歉。试图用尽可能多的关键字来搭配它以供将来搜索。

谢谢!

最佳答案

我猜您是在谈论 ExternalInterface.objectID。此属性返回与 objectembed 标记中的 flash 容器关联的 id。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html?filter_flex=4.1&filter_flashplayer=10.2&filter_air=2.en#objectID

我建议您也应该将“someCallback”的名称传递给您的 JS 方法。这样就不需要在 JS 中对其进行硬编码。

举个例子

// Actionscript source

const jsMethodName:String = "someFunction";
const asCallbackName:String = "someCallback";
ExternalInterface.call(jsMethodName+"(document.getElementById("++")"++");");
ExternalInterface.addCallback(asCallbackName,someASfunction);

// Javascript source

function someFunction(flashId, callbackName)
{
var flashContainer = document.getElementById(flashId);
flashContainer["callbackName"]();
}

编辑:如果您真的想在某些函数参数中获得对 flash DOM 对象的引用,您可能会以一种有点棘手的方式实现它(我宁愿不这样做,但只是为了您的兴趣)。

// Actionscript source

const jsMethodName:String = "someFunction";
const asCallbackName:String = "someCallback";
ExternalInterface.addCallback(asCallbackName,someASfunction);

ExternalInterface.call(
"function(){"+
jsMethodName+"("+
"document.getElementById('"+ExternalInterface.objectID+"'),"+
"'"+asCallbackName+"'"+
");"+
"}"
);

// Javascript source

function someFunction(flashContainer, callbackName)
{
flashContainer[callbackName]();
}

这样你就可以从 flash 中注入(inject)一些 JS 代码到 js 中。它有效,但看起来很乱。

关于javascript - 引用使 ExternalInterface.call 调用 javascript 函数的 html 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6504369/

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