概括:
input[type=file]
我的网络应用程序中有几个元素,它们运行良好。好吧,它们中的 99% 都可以正常工作,但是刚才,我遇到了一个案例,当我单击所述元素时,Firefox 没有显示文件选择对话框。我没有注意到它与其他情况有任何显着差异,它确实有效。它上面没有不可点击的元素,您甚至可以在点击元素时看到 Firefox 自己的按钮推送效果。
为了清楚起见,没有“模拟点击”。我知道出于安全原因,这根本不起作用。上传元素封装在overflow:hidden;
-Divs 中,覆盖具有较高 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
}