2016-04-25 32 views
-1

HTML具有拖放,ondrag当像=,= ondrop等 例如几个属性,拖放的HTML属性中使用的“事件”的范围是什么?

<p id="source" ondrag="drag_handler(event);" ondragstart="dragstart_handler(event);" draggable="true">...</p> 

我的问题是有关说法 “事件”。它的名字是硬编码的。显然,它是一个对象。它有一个奇怪的范围。据使用它的HTML元素中定义,但它是未定义的元件外部,即

<script> 
    typeof event; // returns undefined 
</script> 

在Chrome中,事件处理程序的内部,(typeof运算事件)返回对象,它是HTML元素内的相同对象,以便你实际上可以直接在事件处理程序中删除参数和引用“event”对象。在Firefox中,事件处理程序中的事件未定义,因此您必须将其用作参数。看起来拖放的实现(至少是内联版本)是基于kludges的。

此“事件”对象在哪里记录在案?这是什么样的变量范围?它是如何成为一个选定的HTML元素内部的定义对象和未定义的内部脚本元素,即在JavaScript外定义但在JavaScript内部未定义?这是什么逻辑?

+0

dragstart_handler调用此函数然后检查它 –

+0

如果您可以将此限制为单个问题,则回答起来会更容易。你首先要做一些研究,然而,快速搜索'ondrag'找到了[这个使用JavaScript拖放指南](https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API)... –

回答

0

想想看就像如果你连接在JavaScript(你应该做)的事件处理程序,它应该是这样的:

document.getElementById('source').addEventListener("drag",function(event) { 
    drag_handler(event); 
},false); 

注意如何event只在这个函数的范围,以及其他地方。这基本上是一样的。