打开新的空白窗口,添加输入元素,然后将click事件分派给不起作用的元素

时间:2015-08-19 03:15:34

标签: javascript jquery html dom mouseevent

我试图通过网络浏览器做一些奇怪的事情是有正当理由的。我正在尝试做的事情以及我如何做到如下。

  1. 点击某个按钮后创建一个新的空白窗口。

    var newWindow = window.open('',' new window',spec,true);

  2. 在新窗口中添加file类型的输入元素。

    newWindow.document.write('< input type =" file" id =" select-file">');

  3. 立即将点击​​事件发送到上面的输入元素。

    newWindow.document.getElementById(' select-file')。dispatchEvent(新事件('点击'));

  4. 所有三个步骤都在一个函数中完成,该函数通过单击步骤1中提到的按钮触发。单击该按钮时,步骤1肯定会创建一个新窗口,步骤2将插入输入元素。但是,第3步只会通过而没有任何错误。当窗口保持打开状态时再次按下按钮时,只有第3步才能正常工作。

    这两种情况的唯一区别是,只有在必须创建窗口时才会执行步骤1,2。当窗口已经打开并重新使用时,将忽略步骤1,2。

    因此,我假设调度鼠标事件时出现问题。但我不知道。有人可以详细说明这个吗?

    我正在尝试处理的代码与我所做的示例类似。

    `http://jsfiddle.net/dansoonie/q8tzyx6z/`
    

    我认为由于其他一些JSfiddle问题而无法正常工作,但如果我的解释不可理解,请查看。提前谢谢。

2 个答案:

答案 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();

在jQuery中使用ID访问元素,您必须在#前加上

http://jsfiddle.net/santoshj/q8tzyx6z/1/