我遵循了一个关于使用 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/