addEventListener IE11错误

时间:2017-03-16 16:01:29

标签: javascript html three.js internet-explorer-11

我在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上工作正常。

提前致谢。

1 个答案:

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

希望有所帮助!