2009-03-10 6 views
2

非表示のFileUploadウィジェットの参照ボタンをクリックするようにしたいと思います。 次のコードはIE 6以降で正常に動作しますが、FireFoxでは動作しません。gwt fileupload

final FileUpload upload = new FileUpload(); 

upload.setVisible(false); 
upload.setName("uploadFormElement"); 
panel.add(upload); 

panel.add(new Button("Select File", new ClickListener() 
{ public void onClick(Widget pSender) 
{ jsClickUpload(upload.getElement()); } })); 

native void jsClickUpload(Element pElement) /*-{ pElement.click(); }-*/; 

どのように私はFireFox(と他のブラウザでも同じ)を達成できますか?

答えて

1

ソリューションはここで読むことができます:最後の段落で

http://www.quirksmode.org/dom/inputfile.html

クリック()メソッドを使用すると、 フォームフィールドのクリックをシミュレートすることができます。 チェックボックスがトグルされ、ラジオ が選択されます。残念ながら MozillaとOperaはファイルアップロードフィールドにこの メソッドを追加していません。私は なぜそれを追加するのが実際に セキュリティリスクではないと思っています が最悪の場合、ファイル選択 ウィンドウがポップアップしているので。

+0

ファイルポップアップはモーダルダイアログであるため、スパムに遭遇してユーザーにDoS攻撃を引き起こす可能性があります。 – Chii

+0

また、悪意のあるスクリプトは、慎重に選択された時間にブラウズダイアログをトリガして、ユーザーが期待した場所以外の場所にファイルを送信させる可能性があります。 これは、Flash 10ではフラッシュではもはや不可能であることにも留意することは重要です。 –

0

あなたはonClick()メソッドを直接呼び出してみましたか?

+0

GWTのFileUploadウィジェットにはクリック方法がないため、インラインネイティブのJavaScriptを使用する必要があります。 – Drejc

0

クリック方法は現在FF4で実装されています。どのセキュリティルールが実装されているかについて議論されており、Window.openと似ていると思われます。タイマーまたは負荷ではなく、ユーザーアクションです。