我在IE11上使用three.js,并且addEventListener func有问题;
函数内部的代码永远不会被执行:
var fileInput = document.createElement( 'input' );
fileInput.type = 'file';
fileInput.addEventListener( 'change', function ( event ) {
editor.loader.loadFile( fileInput.files[ 0 ] );
} );
熟悉addEventListener函数的浏览器,当我点击“'”时,不知何时不会调用内部函数。 fileInput按钮:
var importOption = new UI.Panel();
importOption.setClass('option');
importOption.setTextContent('Import');
importOption.onClick(function () {
fileInput.click();
} );
options.add(importOption);
如何触发“改变”的任何想法?功能?我希望它由用户按下按钮触发,就像它写在代码中一样。
此代码取自three.js源文件,并且在chrome上工作正常。
提前致谢。
答案 0 :(得分:1)
将click事件绑定到以这种方式创建的html元素时遇到了类似的问题。它在Windows 8中不适用于IE11,但在Windows 10,Edge和所有其他浏览器中的IE11中都有效。
我的代码看起来像:
var trigger = document.createElement( 'div' );
fileInput.addEventListener( 'click', function ( e) {
console.log("clicked the trigger");
} );
trigger.click();
该日志未出现在我的控制台中。
我发现我可以通过向document.body添加触发器来解决问题。
var trigger = document.createElement( 'div' );
trigger.style.display = "none";
document.body.appendChild(trigger);
fileInput.addEventListener( 'click', function ( e ) {
console.log("clicked the trigger");
} );
trigger.click();
希望有所帮助!