HTMLタグに問題があります<input type="file" />
Google Chromeで。
予想通りページに「参照」ボタンが表示されますが、クリックしてファイルを選択すると、ブラウザからのポップアップダイアログウィンドウが全く開きません。
私は自分のフォームとFirefoxでテストし、正しく動作しました。どんなアイデアが間違っているのですか、どうすれば修正できますか?
ここにもコードがあります:
<form action="" method="post" accept-charset="utf-8" enctype="multipart/form-data">
<label for="imgfile">File input</label>
<input type="file" name="imgfile" />
これがChromeで機能しない理由はありません。私たちが与えた例のマークアップをHTMLファイルにコピーし、それを開いてみましたか?うまくいきますか?サードパーティのプラグインや拡張機能がそれを止めない限り、それはそうするべきです。
この問題を引き起こしている他の場所にマークアップがある可能性があります。おそらく、「ブラウズ」ボタンに到達する前にクリックイベントをキャッチする入力フィールド上のレイヤーですか?
私の場合、問題は次のとおりでした:
クリックハンドラ内で、コードはすべての伝播をキャンセルしていました
falseを返します。
このreturnステートメントを削除すると、input = fileの問題が解決しました。
入力タイプファイルが機能しない原因は2つ考えられます。
それが誰かを助けることを願っています。私の場合の問題は、ドキュメント全体にeventListenerを適用していたため、ドキュメント全体にevent.preventDefault()
を適用していたことです。
_function onMouse( event ) {
event.preventDefault();
// calculate mouse position in normalized device coordinates
// (-1 to +1) for both components
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
mouseEventHandler( event );
}
document.addEventListener( 'click', onMouse, false );
_
カスタムイベントハンドラーをドキュメント全体ではなく1つのdivにのみ適用し、特に、別のdivで設定されたフォームイベントをオーバーライドするイベントハンドラーを使用したくありませんでした。そのため、eventListenersのスコープを 'visualizationContainer' divに制限しました。
document.getElementByID('visualizationContainer').addEventListener( 'click', onMouse, false );
これですべてが修正されました。