0

我已经尝试了一切,但这段 Javascript 代码不起作用:

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在您拖动身体时应用一些样式,并在拖动离开时将其删除。convertToMOSTEM每当删除文件时,它也应该调用。它将 kk 记录到控制台,这意味着其中的代码DOMContentLoaded已执行。但是,它永远不会为盒子或日志设置动画 kkkkkkkk!当我拖到控制台或离开时,当我放下它时尝试打开文件。我很确定永远不会定义事件处理程序。它适用于 Safari 和 Chrome。问题是什么?

4

1 回答 1

1

我发现了错误。这似乎是随机的(甚至可能是一个错误?),但它是 setTimeout 调用。把它注释掉,它工作正常!

于 2013-03-15T04:13:53.243 回答