触发通过swfoject'嵌入的flash对象功能;s嵌入SWF
Trigger a flash objects function embedded via swfobject's embedSWF?
我已经查看了我能找到的每一个资源,以创建一种简化的方法来实现这一点,但每次尝试都会出现一个基本错误。我根本无法让它发挥作用!
这是我电影第一个关键帧的flash测试动作脚本:
import flash.external.*; //THIS...
System.security.allowDomain("http://localhost", "*"); //...AND THIS ALSO REQUIRED!
if (ExternalInterface.available) {
trace("ExternalInterface= " + ExternalInterface.available);
flash.external.ExternalInterface.addCallback("myExternalMethod", null, myFunction);
}
function myFunction() {
gotoAndStop(2);
}
这是我的javascript/一点点jQuery:
<script type="text/javascript">
var flashvars = {};
var params = {
wmode: "transparent",
allowscriptaccess: "always"
};
var attributes = { //The addition of these attributes make it work!
id: "number-input",
name: "number-input"
};
var embedHandler = function (e){
mySWF = e.ref;
};
swfobject.embedSWF("images/flash-form.swf", "number-input", "800", "320", "9.0.0", "expressInstall.swf", flashvars, params, attributes, embedHandler);
function executeFlash() {
getObjectById("number-input").myExternalMethod();
}
function getObjectById(objectIdStr) {
var r = null;
var o = document.getElementById(objectIdStr);
if (o && o.nodeName == "OBJECT") {
if (typeof o.SetVariable != undefined) {
r = o;
} else {
var n = o.getElementsByTagName(OBJECT)[0];
if (n) {
r = n;
}
}
}
return r;
}
$(function() {
$('#main-button-big').click(function(event){
event.preventDefault();
executeFlash();
});
});
</script>
如果我做了一些愚蠢的事情,比如。。。
$(mySWF).hide();
它隐藏了,所以我确信脚本可以看到这个对象。
无论我尝试过什么方法,我总是(在firefox中测试)会收到这样的错误:
错误:TypeError:mySWF.myExternalMethod不是函数。
狩猎:
TypeError:"undefined"不是函数(正在评估"mySWF.myExternalMethod()")
如果我尝试jQuery版本的getElementById(绕过embedHandler),我会得到:
错误:TypeError:$(…).myExternalMethod不是函数。或TypeError:"undefined"不是函数(正在评估"$('#number plate input').myExternalMethod()')
我需要尽快完成这个项目,我已经筋疲力尽了。如有任何帮助,我们将不胜感激。
更新:请注意,embedHandler不再需要,也不再用于触发任何类型的事件。不过,这是一段有用的代码,所以我选择保留它。
将javascript中的attributes
变量从空对象更改为:
var attributes = {
id: "flash_movie",
name: "flash_movie"
};
然后您应该能够使用调用暴露的函数
document.getElementById("flash_movie").myExternalMethod();
相关文章:
- 设置显示后Flash对象方法不可用:无
- jQuery 1.10.2事件未在flash对象上启动
- 一种JavaScript,可在文档就绪时自动点击flash对象
- 使用 JavaScript 控制的 Flash 对象
- 使用 JavaScript 访问 Flash 对象方法
- IE 是唯一不允许 Flash 对象操作的浏览器(或版本)
- Flash 对象在动态添加到 IE 中的 DOM 时不起作用
- 使用 JavaScript 将查询参数更新到 Flash 对象
- 在我的网站上嵌入Flash对象会成为Javascript关键事件的问题吗?
- 如何公开 Flash 对象的 ActionScripts,以便使用 Javascript 处理它
- 用HTML5拍摄Flash对象的屏幕截图
- 如何使用javascript显示/隐藏flash对象
- flash对象未显示在firefox中
- 我可以从Flash对象中获取wmode参数吗
- 禁用右键单击嵌入的直播flash对象
- HTML在页面和Flash对象中同时滚动
- 如何用javascript阻止flash对象上的链接
- 删除所有flash对象而不会使浏览器超载
- 如何离线运行下载的flash对象
- 如何从javascript检查flash对象是否处于全屏模式