我试图通过网络浏览器做一些奇怪的事情是有正当理由的。我正在尝试做的事情以及我如何做到如下。
点击某个按钮后创建一个新的空白窗口。
var newWindow = window.open('',' new window',spec,true);
在新窗口中添加file类型的输入元素。
newWindow.document.write('< input type =" file" id =" select-file">');
立即将点击事件发送到上面的输入元素。
newWindow.document.getElementById(' select-file')。dispatchEvent(新事件('点击'));
所有三个步骤都在一个函数中完成,该函数通过单击步骤1中提到的按钮触发。单击该按钮时,步骤1肯定会创建一个新窗口,步骤2将插入输入元素。但是,第3步只会通过而没有任何错误。当窗口保持打开状态时再次按下按钮时,只有第3步才能正常工作。
这两种情况的唯一区别是,只有在必须创建窗口时才会执行步骤1,2。当窗口已经打开并重新使用时,将忽略步骤1,2。
因此,我假设调度鼠标事件时出现问题。但我不知道。有人可以详细说明这个吗?
我正在尝试处理的代码与我所做的示例类似。
`http://jsfiddle.net/dansoonie/q8tzyx6z/`
我认为由于其他一些JSfiddle问题而无法正常工作,但如果我的解释不可理解,请查看。提前谢谢。
答案 0 :(得分:1)
出于安全考虑,在大多数浏览器中禁用从输入元素上的JS触发click事件
检查此问题In JavaScript can I make a "click" event fire programmatically for a file input element?
答案 1 :(得分:0)
在线下的给定小提琴改变
$(newWindow.document.body).find('input-file').click();
到
$(newWindow.document.body).find('#input-file').click();
ID
访问元素,您必须在#
前加上