我已經試過一切,這段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