Javascript 为什么输入类型=';文件';不发送事件?

Javascript 为什么输入类型=';文件';不发送事件?,javascript,html,events,event-handling,dom-events,Javascript,Html,Events,Event Handling,Dom Events,为什么这个简单的示例不起作用?: 函数imageLoad(){ 设ev=new事件('click',{bubbles:true}); 图像。调度事件(ev); } 首先,检查某些安全含义适用是正确的,但根据您的目标,如果您将事件构造函数更改为鼠标事件,则在本例中它将起作用 ... <body> <input id="image" type="file" /> <img id="handle" src="https://cdn.elegantthemes.com/b

为什么这个简单的示例不起作用?:


函数imageLoad(){
设ev=new事件('click',{bubbles:true});
图像。调度事件(ev);
}

首先,检查
某些安全含义适用是正确的,但根据您的目标,如果您将
事件
构造函数更改为
鼠标事件
,则在本例中它将起作用

...
<body>
<input id="image" type="file" />
<img id="handle" src="https://cdn.elegantthemes.com/blog/wp-content/uploads/2015/02/custom-trackable-short-url-feature.png" />
<script>
  let handle = document.getElementById('handle');
  handle.addEventListener('click', imageLoad, false);

  function imageLoad() {
    let ev = new MouseEvent('click', {bubbles: true});
    image.dispatchEvent(ev); 
  }
</script>
...
。。。
让handle=document.getElementById('handle');
handle.addEventListener('click',imageLoad,false);
函数imageLoad(){
设ev=newmouseevent('click',{bubbles:true});
图像。调度事件(ev);
}
...

定义“它不起作用”<代码>图像未定义,您的控制台可能会告诉您这一点。请注意,
img
是一个,它从来没有结束标记。你从不写
。在HTML中,它只是
。在XHTML(您可能没有使用)中,它是
@JeremyThille:遗憾的是,
图像
不是未定义的,它是文件输入的自动全局,因为它有一个
id
:-|@T.J.不可能_o@JeremyThille这是一个很好的答案,而且很有效。有趣的事实:iOS上的Safari将在不需要这种技巧的情况下发送事件,即使存在所有安全隐患。