在IE11中单击事件不触发

click event not firing in IE11

本文关键字:事件 单击 IE11      更新时间:2023-09-26

我有这个js文件:

function fireClick(node){
    if ( document.createEvent ) {
        var evt = document.createEvent('MouseEvents');
        evt.initEvent('click', true, false);
        node.dispatchEvent(evt);
    } else if( document.createEventObject ) {
        node.fireEvent('onclick') ;
    } else if (typeof node.onclick == 'function' ) {
        node.onclick();
    }
}
function selectAvatar()
{
    var fileSelector = document.createElement('input');
    fileSelector.setAttribute('type', 'file');
    fileSelector.setAttribute('accept', "image/gif, image/jpeg");

    fileSelector.onchange = function(event) {
        var fileList = fileSelector.files;
        //alert(fileList.length);
        if (fileList.length==0) return;
        reader.readAsDataURL(fileList[0]);
    }
    var reader = new FileReader();
    reader.onload = function(e) {
        var dataURL = reader.result;
        //alert(dataURL);
        var container = document.getElementById("avatart-container-div");
        var backgroundIMgString = 'url("'+dataURL+'")';
        container.style.backgroundImage=backgroundIMgString;
    }
    fireClick(fileSelector);
}

,它应该以编程方式打开一个文件选择器来选择图像。虽然这适用于FF和chrome,但这不适用于IE(11是我的版本)。拾取器本身不会出现。尝试逐行调试,但一切似乎都很好(没有错误或异常)。有人知道是什么问题吗?

摘自评论:

实际上只创建了元素,而没有将添加到DOM中。您可以使用以下命令将其添加到DOM: document.body.appendChild(fileSelector);

在selectAvatar函数中:

function selectAvatar()
{
    var fileSelector = document.createElement('input');
    fileSelector.setAttribute('type', 'file');
    fileSelector.setAttribute('accept', "image/gif, image/jpeg");
    document.body.appendChild(fileSelector);
    // do stuff
}

也здрасти