0

これはAS3の部分です。

import flash.net.FileReference;
import flash.events.Event;
import flash.external.ExternalInterface;
import flash.system.Security;

Security.allowDomain( "*" );

// file reference:
var file:FileReference = new FileReference();
ExternalInterface.addCallback( "bFile" , choose );

function choose():void{
    ExternalInterface.call( "alert( 'browse' )" );
    file.browse();
}

HTML部分:

<object width="1px" height="1px">
<param name="movie" value="./ftest/uploader.swf">
<embed width="1px" height="1px" allowscriptaccess="always" id="uploader" src="./ftest/uploader.swf">
</object>

JSパート:

$( "#uploader" )[ 0 ].bFile();

更新:-[ボタンをクリックして呼び出されるアクション]

$( "#uploader" )[ 0 ]オブジェクトを返します(使用した場合と同じようにgetElementById)。

choose()トリガーされると、「broswe」が含まれるアラートがスローされるため、と呼ばれることがわかります。

しかし、それ以上は得られません。

すべてのブラウザのコンソールで次の行が表示されます。UncaughtError:NPObjectでメソッドを呼び出すときにエラーが発生しました。

ここで何が悪いのか理解するのを手伝ってもらえますか?

4

1 に答える 1

1

問題はセキュリティに関連していると考えてください。ユーザーの操作(KeyboardEventまたはMouseEvent)に直接応答してbrowseメソッドを呼び出す必要があります。これに関するドキュメントの特定の詳細なセクションをお読みください:http: //help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html#browse()

私が参照しているドキュメントの一部:

FlashPlayer10およびFlashPlayer9 Update 5では、ユーザーイベント(たとえば、マウスクリックまたはキープレスイベントのイベントハンドラー)に応答してのみ、このメソッドを正常に呼び出すことができます。それ以外の場合、このメソッドを呼び出すと、FlashPlayerがエラー例外をスローします。

于 2012-05-28T03:27:59.387 に答える