2016-04-25 29 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只在這個函數的範圍,以及其他地方。這基本上是一樣的。