Javascript:如何获取drop事件的文本值
Javascript: How to get the text value of drop event?
我想知道如何获取drop事件的文本值。这似乎是一个简单的问题,但令人惊讶的是,我找不到有效的答案。
下面的演示
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<div id="dropbox" contenteditable="true" id="dropbox">
</div>
<style>
#dropbox{
width:400px;
height:60px;
background-color: #87cefa;
}
</style>
<script>
$('#dropbox').on('drop', function(e) {
console.log(e.dataTransfer); //first try
console.log(e.getData('Text')); //second try
});
</script>
看起来你几乎有is,但是由于你使用的是jQuery,Mozilla示例中使用的原始事件(例如)需要按如下方式访问:
console.log(e.originalEvent.dataTransfer.getData("text"));
上面的链接还显示了如何防止浏览器像 url 一样跟随文本(通过禁用"dragover"和"drop"的默认行为)。您还需要确保div 中有空间以便能够在那里放置一些东西(下面,我只是设置样式以使div 占据整个视口)。使用 jquery 将所有这些放在一起:
<script>
$('#dropbox')
.css('width', '100%')
.css('height', '100vh')
.on('dragover', function(e) {
console.log('in the box');
e.preventDefault();
})
.on('drop', function(e) {
console.log(e.originalEvent.dataTransfer.getData("text"));
e.preventDefault();
});
</script>
首先,最好将 DOM 操作代码包装在就绪调用中,以便在开始操作页面之前准备就绪。有关更多详细信息,请参阅此链接:https://learn.jquery.com/using-jquery-core/document-ready/
然后,此代码应该可以工作:
var dropstr;
$( document ).ready(function() {
$('#dropbox').on('drop', function(e) {
e.originalEvent.dataTransfer.items[0].getAsString(function(str)
{
dropstr=str;
})
});
});
数据传输 API 有点复杂,但您可以在此处找到更多详细信息:https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 我如何获得“”的原始位置;ui“可拖动”;在“;drop”;事件
- Javascript:如何在jQuery中编写这个drop事件
- 处理“;drop”;与Raphael在javascript中的事件
- HTML5拖放;Drop-使用jQuery处理事件
- Javascript:如何获取drop事件的文本值
- 两个视图中的Backbone Drop事件侦听器
- 如何使用jQuery's的drop事件,用于上载从桌面拖动的文件
- HTML5 drop事件具有不同的e.target作用域
- 如何调用ondragstart和drop事件手动javascript
- 如何在Select2中调用click事件添加按钮到Select2 -drop和Select2 -no-results
- 在AngularJS指令中不会调用Drop事件
- 为什么' .draggable() '没有' drop '事件?
- 触发器'drop'事件
- jQuery EasyUI树中的Drop事件
- Drop事件没有持续被解雇
- 为什么不使用mouseup事件目标而不是“老式”的位置呢?drag-n-drop
- jQuery Drop事件未启动