我已经试过一切,这段JavaScript代码不起作用:Firefox没有注册事件处理程序?
document.addEventListener('DOMContentLoaded',function(e){
console.log('kk');
var box=document.getElementById('box');
var body=document.getElementsByTagName('body')[0];
setTimeout(document.getElementById('msgline').style.opacity=1,1000);
body.addEventListener('dragenter',function(e){
console.log('kkkkkkk!');
box.style.transform=box.style.webkitTransform='rotateX(-20deg) rotateY(180deg)';
enters++;
e.preventDefault();
return false;
});
body.addEventListener('dragover',function(e){e.preventDefault(); return false;});
body.addEventListener('dragleave',function(e){
if(--enters===0)
box.style.transform=box.style.webkitTransform='rotateX(-20deg)';
});
body.addEventListener('drop',function(e){
var files=e.dataTransfer.files;
[].forEach.call(files,function(file){
convertToMOSTEM(file);
}
);
e.preventDefault();
return false;
});
});
至少不会在Firefox。它意味着在body
上注册事件处理程序,以获得html5拖动。当您拖动身体时,它应该将一些样式应用于box
,并在dragleave上将其删除。每当文件被丢弃时它也应该调用convertToMOSTEM
。它将kk记录到控制台,这意味着执行DOMContentLoaded
中的代码。但是,它从不动画盒或记录kkkkkkkk!当我拖动或离开时,当我放下它时尝试打开文件。我很确定事件处理程序从来没有定义。它适用于Safari和Chrome。问题是什么?
如果不是使用'getElementsByTagName'选择'body',而只是使用'document.body',会发生什么? – 2013-03-15 04:06:00
@ JulianH.Lam刚刚尝试过,它没有工作 – Markasoftware 2013-03-15 04:07:16