是否可以通过 JavaScript 在 Flash 对象上触发点击事件?
4 回答
是和不是。您可以使用ExternalInterface
来模拟 Flash 项目中的点击事件,前提是它们不关心事件源(即人与否)。
但是,Flash 中对单击事件源特别模糊的功能之一是“文件选择”对话框。如果没有来自真实用户的真正点击(就浏览器而言),就不可能触发它;如果可能的话,这实际上是一个潜在的安全风险。如果我没记错的话,这在 FP 9 之前是可能的,我们在文件上传器中利用了这种行为。一旦他们修复它就开始引起问题,但我很高兴他们这样做了:)
克服这个限制的典型方法是创建一个透明的 Flash 对象并在其上放置一个显示按钮图像的层;点击事件最终会命中 Flash 对象并触发用户点击事件。
我从未测试过这个,所以只是认为
请注意请注意,您应该有一个特定的 div 来捕获点击。
在 Actionscript 中要模拟点击事件,是可以使用的。
element.dispatchEvent(new MouseEvent(MouseEvent.CLICK, true, false));
那么,为什么不创建一个外部函数,一旦使用外部接口从 JavaScript 接收到调用,就会分派事件呢?当然,这是非常粗糙的,但它可能会奏效。
动作脚本:
import flash.external.*;
function simulateButtonClick()
{
// Here goes your code
}
ExternalInterface.addCallback("invokeSimulateButtonClick", simulateButtonClick);
Javascript:
ExternalInterface.addCallback("invokeSimulateButtonClick", YOUR_VARIABLES);
Flash 可以ExternalInterface
,但您需要先在 Flash (.fla) 中编写一些 ActionScript。
一些参考资料——
http://www.adobe.com/devnet/flash/articles/external_interface.html
不,您无法捕获对嵌入元素的点击,除非它位于 div 或其他东西的后面。