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