Firefox没有注册事件处理程序?

时间:2013-03-15 04:00:21

标签: javascript firefox javascript-events drag-and-drop

我已尝试过所有内容,而且这个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应用一些样式,并在dragleave上删除它们。每当文件被删除时,它也应该调用convertToMOSTEM。它将kk记录到控制台,这意味着DOMContentLoaded内的代码已被执行。但是,它永远不会动画框或日志kkkkkkkk!我拖动或离开时到控制台,当我放下它时尝试打开文件。我很确定永远不会定义事件处理程序。它适用于Safari和Chrome。有什么问题?

1 个答案:

答案 0 :(得分:1)

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

相关问题