javascript - Javascript 中的 HTML5 拖放事件

标签 javascript html drag-and-drop

我遵循了一个关于使用 Javascript 在 HTML 中拖放的小教程,可以在这里找到:

http://www.html5rocks.com/tutorials/dnd/basics/

问题是,我正在处理内部样式限制。这意味着所有文档都必须按照这里每个人都使用的标准编写。

对于 Javascript,其中之一是始终以对象表示法编写函数。

var myFunction = function() {}

代替

function myFunction() {}

在本教程中,HTML5 拖放事件是通过 addEventHandler() 函数添加的。这需要您使用普通 表示法,因为如果您使用对象表示法,addEventHandler() 函数会出于某种原因跳过它。

我尝试重写所有内容,不使用 addEventHandler:

myElement.dragstart = function(e) {}

但没有一个奏效。然而,将 normal 符号与 addEventHandler 一起使用,一切都非常有效。 我只是想确定:我是在忽略某些东西还是应该这样做?我的一部分人怀疑这还没有得到正确支持,您需要使用 addEventHandler。是这样吗?

最佳答案

设置 dragstart 属性与使用 addEventHandler('dragstart', ...) 不仅仅是符号问题。您可以而且应该坚持使用 addEventHandler。但是,使用这种“风格:”应该没有问题

var myFunction = function() {}

myElement.addEventListener('dragstart', myFunction, ...);

编辑

好吧,这并不能直接回答问题,但我觉得在这种情况下确实需要解决这个问题。

写作

var myFunction = function() {}

代替

function myFunction() {}

不是任何类型的“对象表示法”。第一个是函数表达式,因为它是AssignmentExpression 的一部分。第二个是函数声明。有什么不同? kangax explains it really well :

First of all, function declarations are parsed and evaluated before any other expressions are. Even if declaration is positioned last in a source, it will be evaluated foremost any other expressions contained in a scope.
...
Another important trait of function declarations is that declaring them conditionally is non-standardized and varies across different environments. You should never rely on functions being declared conditionally and use function expressions instead.

在内部制定 JavaScript 代码标准的人是否真正理解其中的细微差别?

关于javascript - Javascript 中的 HTML5 拖放事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6164306/

相关文章:

javascript - 如何创建覆盖 div 以适合屏幕的其余部分

javascript - 如何使 Vue 的 element-ui validateField() 与 v-if 一起使用?

java - Android:如何处理嵌入在使用 JSON 检索的字符串中的 html <img/> 标签

javascript - pixi js : drag and drop circle

javascript - 如何清理/替换无法转义的 JS 字符串中的 $&(美元 + 符号)?

javascript - 子元素未添加到父元素(parent.appendChild)

javascript - 拖放到多个元素问题

IOS 拖放缩放

javascript - 使用 Jquery 进行图像交换

html - 如何在html/css中移动下拉菜单?