我可以使用ExternalInterface調用名稱空間JavaScript函數嗎?從Flash調用命名空間JavaScript函數
//JavaScript
foo.bar = function(baz) {}
// AS3
import flash.external.ExternalInterface;
ExternalInterface.call('foo.bar', baz);
我可以使用ExternalInterface調用名稱空間JavaScript函數嗎?從Flash調用命名空間JavaScript函數
//JavaScript
foo.bar = function(baz) {}
// AS3
import flash.external.ExternalInterface;
ExternalInterface.call('foo.bar', baz);
ExternalInterface.call
的文檔有點誤導。它聲明第一個參數必須是一個函數名,這並不是全部的事實。它可以是任何可以被評估爲proprer JS表達式的字符串。事實上
ExternalInterface.call(func, param_1, ... , param_n);
相當於
eval(func)(param_1, ... , param_n);
,所以你可能只是以及執行下列操作
ExternalInterface.call("function (foo) { alert(foo); return true; }","test");
這種技術有時用於Flash JS injection。希望這個澄清的東西...
是的。是的你可以。
這個問題是純粹的理論,所以在我上面調用它的方式調用命名空間函數是正確的? – 2010-02-09 17:16:00
啊,是的,這確實清除了它。謝謝。 – 2010-02-10 16:20:44