2016-04-25 3 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-элемента, так что вы можете фактически избавиться от объекта параметра и объекта «событие» непосредственно внутри обработчика событий. В Firefox событие не определено внутри обработчика событий, поэтому вы должны использовать его в качестве параметра. Похоже, что реализация Drag and Drop (по крайней мере, встроенная версия) основана на 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 определяется только в этой функции масштаба, и нигде больше. Это в основном то же самое.

Смежные вопросы