我使用了这里描述的方法:
http://ericbidelman.tumblr.com/post/14636214755/making-file-inputs-a-pleasure-to-look-at
以编程方式从按钮控件触发文件输入框。它在Chrome和IE中运行良好,但在Firefox中打开了两次“文件上载”窗口。
以下帖子看似相似,我尝试将stopPropagation添加到click事件中,但没有区别。
jQuery - .on('click', ...) event fires two times in Firefox
jQuery click event fired twice in firefox but not in IE
感谢。
修改
相关的HTML是:
<button type="button" id="load_slow_button">Load Playlist</button>
<input id="load_slow_list" type="file" onchange="load_list(this.id)">
按钮的相关Javascript是:
document.getElementById("load_slow_button").addEventListener('click', function(event) {
document.getElementById("load_slow_list").click();
event.stopPropagation;
}, false);
文件输入的Javascript是标准文件处理程序,在手动单击文件输入时可以正常工作。
答案 0 :(得分:0)
通过使事件处理程序成为命名函数来解决问题。
在窗口加载时运行的init()函数中:
document.getElementById("load_fast_button").addEventListener("click", process_click_fast, false);
然后在单独的命名函数中使用事件处理程序:
function process_click_fast() {
document.getElementById("load_fast_list").click();
}
我不知道为什么这会解决这个问题,所以我很感激任何知道的人的回复!