1

actionscriptからjavascript関数を呼び出そうとしています。

現在、私は「ExternalInterface」を使用しており、部分的に成功する可能性があります。

すべての人に見える「scanDNA()」のような関数(スコープ解決なし)を呼び出すことができます。ただし、「Eukarya.Animalia.Chordata.Vertebrata.Gnathostomata.Tetrapoda.Mammalia.scanDNA()」のような関数(スコープ指定)を呼び出すことはできません。

どうすればこれを達成できるか教えてください。

よろしくお願いいたします。

SachinJadhav。

4

3 に答える 3

0

これに関する問題に気づいたことはありません。JavaScript スコープ構造はどのように設定されていますか?

おそらく、ExternalInterface 呼び出しで「()」を除外すると、うまくいく可能性があります..

私が行った場合

var animals = {}
animals.mammals = {}
animals.mammals.test = function() {
  return "whee";
}

とフラッシュ (CS4)

var x:String = ExternalInterface.call('animals.mammals.test');
trace(x);

正しい結果が得られます。

于 2009-11-05T12:27:30.367 に答える
0

関数を呼び出すメソッドをJSで作成するのはどうですか?

function scanDNAinSomeScope(){
    Eukarya.Animalia.Chordata.Vertebrata.Gnathostomata.Tetrapoda.Mammalia.scanDNA();
}

scanDNAinSomeScopeを使用してそれを呼び出しますExternalInterface

アップデート:

はい、その場合、スコープごとに関数を作成する必要があります。ただし、実際には、呼び出す必要がある関数のみを作成します。Flash とは異なるスコープから関数を呼び出す必要があるケースはあまりないと思います。

そして、次のような JS 関数を使用する回避策があります。

function evil(str){
    eval(str);
}

セキュリティホールかもしれません。しかし、私はセキュリティの専門家ではないので、実際にどのような問題があるのか​​ わかりません...「評価は悪」しかわかりません:P

于 2009-10-23T12:44:27.563 に答える
0

JavaScript 疑似プロトコルを使用するとうまくいきます。

于 2009-11-17T10:43:36.663 に答える