3

私は自分のWebページに小さなjqueryコードを実行しています:

<!-- myjs.js -->
<script type="text/javascript">
$(document).ready(function() {  
$("body").append('<div id="ajaxBusy" class="ajaxBusy"></div>');
</script>

ご覧のとおり、特定のクラスと ID 名を使用して、html 本文に div を追加しています。

この .js ファイルを actionscript 3.0 で実行するにはどうすればよいですか? Flash ムービーを作成してこのファイルを呼び出すつもりですか、それとも AS 3.0 を介してインライン JavaScript コードを実行することは可能ですか?

私は以下のコードを見つけましたが、それを機能させることはできません:

import flash.external.ExternalInterface;

var someVarInAS : String = 'foo';
var someOtherVarInAS : int = 10;
var jsXML : XML = 
<script type="text/javascript">
    var someVarInJS = '{$("body").append('<div id="ajaxBusy" class="ajaxBusy"></div>');}';
    var someOtherVarInJS = '{$('#ajaxBusy).fadeIn();}';
    <![CDATA[       
        alert( 'this comes from flash: ' + someVarInJS + ', ' + someOtherVarInJS );
    ]]>
</script>;

ExternalInterface.call( "function js_" + ( new Date().getTime() ) + "(){ " + jsXML + " }" );
4

2 に答える 2

1

AS3 から動的に JS ファイルをロードするためにこれを使用しますが、かなりうまく機能します。別のファイルをロードするのではなく、通常の js を実行するように変更できます。

var script:String = "" + 
    "var newscript = document.createElement('script');" +
    "newscript.type = 'text/javascript';" +
    "newscript.async = true;" +
    "newscript.src = 'SomeJavascriptFile.js';" +
    "(document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(newscript);";

if ( ExternalInterface.available ) {
    ExternalInterface.call("eval", script);
}
于 2013-06-27T05:29:59.350 に答える
0

また、actionscript 内に javascript を記述する必要がなくなり、2 つを別々の場所に分けておくこともできます。次に、「eval」を呼び出して JavaScript を渡す代わりに、ExternalInterface のみを使用してメソッド名を呼び出します。今後のテストと保守が容易になる可能性があります。

あなたのhtmlファイルの中で:

<script>
    function addDiv(){
        // stuff here that adds the div you want, such as what you had:
        $("body").append('<div id="ajaxBusy" class="ajaxBusy"></div>');
    }
</script>

次にフラッシュ内:

if (ExternalInterface.available == true) {
    ExternalInterface.call("addDiv");
}

必要に応じて、flash から javascript にメソッド引数を提供することもできます。

于 2013-06-27T06:06:21.563 に答える