【问题标题】:HTML5 drag&drop ignore drop and opens fileHTML5 拖放忽略拖放并打开文件
【发布时间】:2015-02-05 18:18:58
【问题描述】:


我正在尝试通过拖放和简单的打开文件按钮打开一个文本文件。我设法让我的按钮工作,但拖放有一些问题。当我将文件放在下拉区域时,文件被打开并由浏览器读取,而不是我的 js 代码。

#fileInput {
	display: none;
    }

    #dropBox {
	margin: 15px;
	width: 300px;
	height: 300px;
	border: 5px dashed gray;
	border-radius: 8px;
	background: lightyellow;
	background-size: 100%;
	background-repeat: no-repeat;
	text-align: center;
    }

    #dropBox div {
	margin: 100px 70px;
	color: orange;
	font-size: 25px;
	font-family: Verdana, Arial, sans-serif;
    }
<!DOCTYPE html>
    <html>
    <head>

    <link rel="stylesheet" type="text/css" href="css/file.css" />

    <script>

    <!-- File processing-->
    function procesFiles(files) {
	
	var file = files[0];
	var reader = new FileReader();
	
	reader.onload = function(e) {
		var output = document.getElementById("fileOutput");
		output.textContent = e.target.result;
	};
	

	reader.readAsText(file);
    }
	

    <!-- File input-->
    function showFileInput() {
	var fileInput = document.getElementById("fileInput");
	fileInput.click();
    }

    <!-- Drop box -->
    var dropBox;

    window.onload = function() {
	dropBox = document.getElementById("dropBox");
	dropBox.ondragenter = ignoreDrag;
	dropBox.ondragover = ignoreDrag;
	dropBox.ondrop = drop;
    }

    function ignoreDrag(e) {
	e.stopPropagation();
	e.preventDefault();
    }

    function drop(e) {
	e.stopPropagation();
	e.preventDefault();
	
	var data = e.dataTransfer.files;
	var files = data.files;
	
	procesFiles(files);
	
    }
    </script>
    
    </head>
    <body>
  
     <div id="dropBox">
  	<div>Drop your file here...</div>
    </div>
  
    <input id="fileInput" type="file" onchange="procesFiles(this.files)"/>
  	<button onclick="showFileInput()">Get new file!</button>
  
    <div id="fileOutput" style="width:500px; height:300px;">
    </div>

  
    </body>
    </html>

我的html:

<!DOCTYPE html>
<html>
<head>

<link rel="stylesheet" type="text/css" href="css/file.css" />

<script>

<!-- File processing-->
function procesFiles(files) {

var file = files[0];
var reader = new FileReader();

reader.onload = function(e) {
    var output = document.getElementById("fileOutput");
    output.textContent = e.target.result;
};


reader.readAsText(file);
}


<!-- File input-->
function showFileInput() {
var fileInput = document.getElementById("fileInput");
fileInput.click();
}

<!-- Drop box -->
var dropBox;

window.onload = function() {
dropBox = document.getElementById("dropBox");
dropBox.ondragenter = ignoreDrag;
dropBox.ondragover = ignoreDrag;
dropBox.ondrop = drop;
}

function ignoreDrag(e) {
e.stopPropagation;
e.preventDefault;
}

function drop(e) {
e.stopPropagation;
e.preventDefault;

var data = e.dataTransfer.files;
var files = data.files;

procesFiles(files);

}
</script>

</head>
<body>

 <div id="dropBox">
<div>Drop your file here...</div>
</div>

<input id="fileInput" type="file" onchange="procesFiles(this.files)"/>
<button onclick="showFileInput()">Get new file!</button>

<div id="fileOutput" style="width:500px; height:300px;">
</div>


</body>
</html>

还有我的css文件:

#fileInput {
display: none;
}

#dropBox {
margin: 15px;
width: 300px;
height: 300px;
border: 5px dashed gray;
border-radius: 8px;
background: lightyellow;
background-size: 100%;
background-repeat: no-repeat;
text-align: center;
}

#dropBox div {
margin: 100px 70px;
color: orange;
font-size: 25px;
font-family: Verdana, Arial, sans-serif;
}

你有什么想法,有什么问题吗?

--编辑-- 我还有一个问题 - 如何阻止打开丢弃的文件?

【问题讨论】:

    标签: javascript html


    【解决方案1】:
    e.stopPropagation;   
    e.preventDefault;
    

    这些应该是函数:

    e.stopPropagation();
    e.preventDefault();
    

    【讨论】:

    • 非常感谢,我没有注意到这个错字:)
    • 没问题,每个人都会遇到:)
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 2011-09-24
    相关资源
    最近更新 更多