click()方法在firefox上触发两次

时间:2014-02-04 20:05:45

标签: javascript html5 firefox click

我使用了这里描述的方法:

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是标准文件处理程序,在手动单击文件输入时可以正常工作。

1 个答案:

答案 0 :(得分:0)

通过使事件处理程序成为命名函数来解决问题。

在窗口加载时运行的init()函数中:

document.getElementById("load_fast_button").addEventListener("click", process_click_fast, false);

然后在单独的命名函数中使用事件处理程序:

function process_click_fast() {
    document.getElementById("load_fast_list").click();
}

我不知道为什么这会解决这个问题,所以我很感激任何知道的人的回复!