使用actionscript“eval”的ExternalInterface.call仅适用于firefox而不是chrome

时间:2013-09-16 21:54:59

标签: javascript flash actionscript

Chrome不想让我直接在网址栏中访问swf文件中的javascript(我知道这不是最佳做法,但这就是我想要完成的事情):

假设:

/file.swf?cmd=alert();

使用以下代码(代码段):

flash.external.ExternalInterface.call("eval", cmd);

这仅适用于Firefox,而不适用于Chrome。我正在采用这种方法,因为在chrome中,actionscript 2运行JS的方法是使用getURL(“Javascript:....,但这不再适用于Chrome。

有没有解决方法(通过直接在浏览器中调用文件而不是嵌入页面?) - 我有我的理由!

1 个答案:

答案 0 :(得分:1)

尝试创建代理'eval'功能的自定义函数。 在JS中试试这个......

function exec_code( $value ) {

    window.eval( $value );
}

......在AS中。

var value:String = "[JavaScript Code to execute]";
if ( ExternalInterface.available ) ExternalInterface.call( 'exec_code', value );