- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个非常简单的 SWF 来演示:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.external.ExternalInterface;
public class FlashIELeak extends MovieClip {
public function FlashIELeak() {
addEventListener(Event.ENTER_FRAME, onFrame);
}
private function onFrame(e:Event):void {
ExternalInterface.call("test", null);
}
}
}
最佳答案
大约 2 年前在著名的俄罗斯博客上有帖子。 Alexander Kozlovskij(又名 Fizzer)解释了这个问题。这是他创建的解决方法:
package ru.kozlovskij.external
{
import flash.external.ExternalInterface;
/**
* @author a.kozlovskij
* @copy flash.external.ExternalInterface
*/
public final class ExternalInterfaceExtended
{
private static const instance :ExternalInterfaceExtended= new ExternalInterfaceExtended();
private static var methodName :String;
/**
* U can't instanciate this class, because it implements a Singletone pattern.
* @copy flash.external.ExternalInterface.ExternalInterface()
*/
public function ExternalInterfaceExtended()
{
instance && new ExternalInterface();
methodName = '__flash__addCallback_' + ExternalInterface.objectID;
}
private static function updateJS():void
{
const jsFunc :String = 'function(){ ' +
methodName + ' = __flash__addCallback = function(flashObj, methodName)' +
'{' +
' alert("JS: called overridden __flash__addCallback(" + arguments[0] + ", " + arguments[1] + ")");' +
' flashObj[methodName] = ' +
' (function(methodName)' +
' {' +
' return function()' +
' {' +
' this.CallFunction(\'\' + __flash__argumentsToXML(arguments, + \'\');' +
' };' + //dangling semi-colon for IE 6
' })(methodName);' + //force re-closure to prevent IE memory leaks
'};' +
'}';
ExternalInterface.call(jsFunc);
}
/**
* Fixed: Mem leaks in native addCallback-js-closure.
* @copy flash.external.ExternalInterface.addCallback()
*/
public static function addCallback(functionName :String, closure :Function):void
{
updateJS();
ExternalInterface.addCallback(functionName, closure);
//ExternalInterface.call(methodName, functionName);
//ExternalInterface.call('__flash__addCallback_ext', null, functionName);
}
/**
* @copy flash.external.ExternalInterface.call()
*/
public static function call(functionName :String, ...parameters :Array):*
{
parameters.unshift(functionName);
return ExternalInterface.call.apply(ExternalInterfaceExtended, parameters);
}
/**
* @copy flash.external.ExternalInterface.available
*/
public static function get available():Boolean
{
return ExternalInterface.available;
}
/**
* @copy flash.external.ExternalInterface.objectID
*/
public static function get objectID():String
{
return ExternalInterface.objectID;
}
/**
* @copy flash.external.ExternalInterface.marshallExceptions
*/
public static function get marshallExceptions():Boolean
{
return ExternalInterface.marshallExceptions;
}
public static function set marshallExceptions(value :Boolean):void
{
ExternalInterface.marshallExceptions = value;
}
}
}
关于flash - IE 9 中的 ExternalInterface.call 泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18990609/
在 Actionscript 3 中,我调用 Javascript 使用: ExternalInterface.call('javascriptFunction'); 如果在 Javascript 中
我有js代码: function onFlashReady() { sendToAS("sit"); } function callJS(value) {
我正在尝试从我的 SWF 内部ExternalInterface.call()。 请注意,调用来 self 嵌入到另一个 SWF 中的 SWF(我无法控制的 _root SWF)。 这是我的 Java
第一版: ExternalInterface.call("$(document).trigger", "opened_file_chooser"); 第二个版本: ExternalInterface.
A 有一个 Flash 小部件(音乐播放器),并且在一个页面上有大约 10 个实例。我需要在 flash 和它嵌入的页面的 javascript 之间进行通信。很长一段时间我没有对 actionscr
我想知道是否有人可以查看我的代码。我正在尝试使用以下代码将虚拟变量从 javascript 传递到 actionscript 3: HTML: id="music_player" width="50
这是我的 AC3 代码 private function uploadet( dosya:String ):void { var uploader:URLRequest = new U
我正在尝试让 JS 在 Wordpress 网页和 Actionscript 2 Flash 电影中相互交谈。这一尝试惨遭失败。每次尝试调用我设置回调的函数时,我都会在浏览器错误控制台中收到“....
我有一个返回 div 的 innerHTML 的 Javascript 函数。我试图从 Actionscript 调用此函数并存储返回值。我知道正在调用 Javascript 函数,因为有一个显示返回
我正在尝试编辑一些 flash 以进行外部 javascript 函数调用,但没有成功。这是我的 actionscript 2.0 代码: //testing external .js calls i
任何人都可以确认 ExternalInterface 在 file: 上工作吗?协议(protocol),或者指向一些说它不会的文档? 最佳答案 它开始看起来好像不起作用.. this page说:
在 ActionScript 中,您有两种与主机通信的选项。 (在我的例子中,.NET 应用程序使用 AxInterop.ShockwaveFlashObjects.dll 来托管 Flash 电影)
我需要在我的 Flash 应用程序中获取一个 javascript 变量。我喜欢能够在 javascript(客户端约束)中设置一个变量,而不是定义一个函数。 这能做到吗?我正在尝试使用 Extern
我想从 JS 调用 AS 函数。 我有以下 ActionScript 3 代码: package { import flash.display.*; import flash.eve
我正在尝试使用 javascript 来运行 AS3 函数。当我尝试编译时,收到“访问未定义的属性”错误消息。 我已经在网上阅读了一些有关此的内容,但我仍然不明白。我想让 flash 文件始终监听 j
我写了一个 html 页面,它使用一些 javascript 来隐藏和显示 flash 电影对象。一切正常,直到我尝试退出选项卡,当发生这种情况时,整个浏览器将崩溃,连错误文本框都没有。谁能帮忙?谢谢
我试图从 javascript 访问 swf,所以 livedocs 中的这个示例是我要修改的。 http://livedocs.adobe.com/flash/9.0/ActionScriptLan
根据 Adobe 的说法,嵌入 Flash 对象的“现代”更新方式: -->
我正在开发我的开源项目 Downloadify ,到目前为止,它只是处理返回字符串以响应 ExternalInterface.call 命令。 我正在尝试使用 JSZip 组合一个测试用例和 Down
我正在尝试从 JS 获取全局变量的值。该变量在我的 HTML 文档的 HEAD 部分中定义。 if(ExternalInterface.available){
我是一名优秀的程序员,十分优秀!