在从Flash调用javascript对象之前,请确保该对象存在
Making sure a javascript object exists before calling it from Flash
我正在为一个我无法直接访问的网站开发一个flash应用程序。flash应用程序应该调用网站发布者定义的网站上的javascript函数。有人建议我在从actionscript:调用其"函数"之前检查javascript对象是否存在
var ok:Boolean = ExternalInterface.call(function() {
return typeof customObject !== ''undefined''
}
如果我继续:
if (ExternalInterface.available && ok) {
ExternalInterface.call('customObject.doSomething', someStr);
}
这个if的条件是否总是false,因为在我使用检查之前,保存到ok
中的调用可能还没有完成,或者ExternalInterface.call
是实例化的?换句话说,在确定是否可以保存地假设customObject的存在之前,我是否必须等待第一次调用的结果。
编辑:根据评论中的建议更新代码:
if (ExternalInterface.available) {
var ok:Boolean = ExternalInterface.call('function() { return typeof customObject !== ''undefined'' }');
if (ok) {
ExternalInterface.call('customObject.doSomething', someStr);
} else {
.. do some fallback
}
} else {
.. do some fallback
}
为了健壮性,您需要检查函数是否也存在:
var ok:Boolean = ExternalInterface.call(function() {
if (typeof(customObject) === 'object' && typeof(customObject.doSomething) === 'function') {
return true;
}
}
ExternalInterface.call是同步的,所以你应该会发现它会一直等到这一位结束,然后再转到下一位。
一旦加载swf文件,ExternalInterface.call
方法就会可用(而您的JavaScript文件或变量此时可能不在)。因此,您要做的是使用ExternalInterface.addCallback
方法将ActionScript中的函数绑定到JavaScript代码中的另一个函数。
这是该功能的文档。
相关文章:
- Python Javascript哈希库,以确保JSON对象在传输过程中不会损坏
- 在ES2015中,如何确保所有方法都等待对象初始化?使用ES7装饰器
- 使用 javascript 进行 OOP 编程:确保无论对象如何实例化,这都指向正确的事物
- jQuery - 扩展对象,同时确保数组成员的完整性
- 确保对象可以被垃圾回收
- Javascript:如何确保"这个“;在一个对象内总是相同的
- 使用bind来确保方法引用对象,但它不引用对象;似乎不起作用
- 在从Flash调用javascript对象之前,请确保该对象存在
- 什么'在处理多级对象时,确保JavaScript对象已设置且未定义的最佳实践
- 有没有一种正确的方法可以确保一次只有一个用户使用REST+HTTP对对象进行更改
- 如何确保变量是一个对象
- HTML5 Javascript:如何确保绘制的对象不能离开画布
- 有必要使用双感叹号(!!)来确保对象不是null吗
- 我怎样才能确保'this'引用对象文字中的对象文字
- Javascript:确保闭包中的对象被垃圾收集
- 如何确保承诺链返回一个对象
- 确保通过函数传递的对象属性等于某些值
- 如何确保两个独立的javascript对象的属性被链接
- 如何确保返回对象文本中的方法调用使用预期的“this”
- 确保在调用函数 - angularJS 之前定义了对象