我有这个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
}
还有здрасти
关于javascript - 单击事件在 IE11 中未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24953662/