2011-09-05 59 views
3

我有一個可以使用本地HTML5拖動的元素。它具有分配給它的dragstart,drag和dragend事件偵聽器。另外,我還有分配給document.body元素的keydown和keyup事件監聽器。在HTML5本機拖動過程中檢測keydown/up事件

拖動可拖動元素時,ondrag事件將按預期啓動。當我按&釋放任何鍵而不拖動任何東西時,document.body keydown/up事件將會觸發。

但是,如果我在執行ondrag時執行/ up,那麼document.body keydown/up事件將不會觸發。有沒有解決辦法/黑客?

+0

你能提供一個例子/小提琴嗎? –

+0

這裏你去:http://jsfiddle.net/SVArR/ – woran

+0

我努力嘗試,但在webkit瀏覽器中,我無法在正常的拖動事件中使用按鍵事件。即使沒有約束這些事件,關鍵事件也不會被註冊。 –

回答

0

回答我自己的問題......從Drag Operations - MDN

隨着dragenter和dragover事件,與dropEffect屬性是 初始化爲用戶請求的效果。用戶可以通過按修改鍵來修改所需的效果。雖然 使用的確切密鑰因平臺而異,但通常使用Shift和Ctrl鍵 來在複製,移動和鏈接之間切換。

在HTML5本機拖動中,唯一可以觸發任何內容的按鍵是修飾鍵。在Mac上,它是選項鍵和控制鍵。通過event.dataTransfer.effectAllowed捕獲操作,而不是按鍵事件或keydown事件。