概要:
input[type=file]
Web アプリ全体にいくつかの要素があり、うまく機能します。それらの 99% は問題なく動作しますが、たった今、Firefox で上記の要素をクリックしてもファイル選択ダイアログが表示されないケースに遭遇しました。それが機能する他の状況との大きな違いはありません。その上にクリックできない要素はありません。要素をクリックすると、Firefox独自のボタン押し効果も見られます。
これを明確にするために、「シミュレートされたクリック」はありません。セキュリティ上の理由から、これがまったく機能しないことは承知しています。アップロード要素はoverflow:hidden;
-Div にカプセル化され、より高い z-index とコンテナーのサイズを持つコンテンツ全体をオーバーレイします。あなたは間違いなくボタンをクリックし、これは私がこのテクニックを使用した場所ならどこでも機能しました.
次のような状況ではなく、2 日経っても理由が見つからないようです。インライン CSS で申し訳ありません。問題自体が解決したら、クラスに移動します。
この問題の原因を突き止めるヒントをいただければ幸いです。
アップローダ ペイロード インジェクタ:
function _initThumbUploader()
{
// (1)
$iframe = $("<iframe />").attr(
{
"name": "thumb_uploader_target",
"id": "thumb_uploader_target",
"class": "upload_iframe_target"
}).css(
{
"width": "1px",
"height": "1px",
"opacity": "0",
"display": "block",
"border": "0px none"
});
// (2)
$uploadform = $("<form />").attr(
{
"id": "thumb_uploader_src",
"method": "post",
"enctype": "multipart/form-data",
"name": "thumb_uploader_src",
"target": "thumb_uploader_target",
"action": "/database/uploadproductpic"
}).css(
{
"position": "absolute",
"left": "0px",
"top": "0px",
"opacity": "1"
});
// (3)
$fileinput = $("<input />").attr(
{
"class": "upload_triggers",
"type": "file",
"name": "upthumb",
"size": "1",
"accept": "image/*"
}).css(
{
"left": "0px",
"margin-left": "-500px",
"z-index": "100005",
"font-size": "128pt",
"position": "absolute",
"top": "0px",
"width": "600px",
"height": "340px",
"opacity": "0",
"cursor": "pointer"
});
// 4
$appinput = $("<input />").attr(
{
"name": "app",
"type": "hidden",
"value": "products"
});
// 5
$idinput = $("<input />").attr(
{
"name": "productid",
"type": "hidden",
"value": "-1"
});
// Append 3, 4, 5 to 2
$uploadform.append($fileinput);
$uploadform.append($appinput);
$uploadform.append($idinput);
// Append everything to the uploader box
$(".thumbUploader").append($iframe).append($uploadform);
// Install onchange trigger
// TODO
}