2013-10-27 53 views
12

有人可以幫助我理解在JavaScript中使用originalEvent嗎?我真的找不到有關它的很好的文檔來源。瞭解JavaScript originalEvent

谷歌的搜索結果讓我想到了一個對新手來說太複雜而難以理解的討論網站。

我最近有一個問題在SO,和一個人加入這行代碼

$("#url").bind('paste', function(e) { 
    var val = e.originalEvent.clipboardData.getData('text/plain'); 
.... 

我現有的代碼,這BTW工作回答了這個問題。

如果有人能幫助我理解它的使用,我將不勝感激。

+1

見http://stackoverflow.com/questions/16674963/event-originalevent-jquery – hiattp

+1

'originalEvent'不是一個JavaScript的事情,這是[jQuery的事情(http://api.jquery.com/category /活動/事件對象/)。我已經添加了'jquery'標籤。 –

回答

18

您正在使用名爲jQuery的JavaScript庫,它是$()函數的來源。 jQuery包裝了JavaScript的幾個部分,使其更易於使用。其中一個部分是事件處理。在您的示例中,因爲您使用jQuery綁定到粘貼事件,傳遞給您的回調(e)的對象是jQuery event object,而不是內置的JavaScript事件對象。 jQuery事件對象公開了originalEvent屬性,使您可以訪問底層的內置事件對象。

在您的示例中,您需要獲取通過jQuery事件對象不可用的剪貼板數據,因此您需要訪問原始事件對象才能獲取它。

+0

一些背景。我需要捕獲粘貼的數據,因此粘貼事件。但爲什麼只需要'originalEvent'來獲取數據。爲什麼不能只是一個簡單的'var val = $(「#url」).val()'工作?爲什麼需要在我的情況? – bobbyjones

+0

什麼是#url,你想達到什麼目的? – joews

+0

它是一個輸入字段,我需要捕獲一個youtube鏈接,解析它,並通過正則表達式獲取youtube id,然後直接打印它。 – bobbyjones

2

某些事件可能具有特定於它們的屬性。 這些可以作爲event.originalEvent對象的屬性訪問。

來源:jQuery Event object

在您的例子中,paste eventclipboardData財產通過event.originalEvent訪問。

+0

好的,因爲我試圖理解並將其與我的代碼關聯。你的意思是說我需要在我的'paste'事件中訪問某種類型的屬性?因此使用'originalEvent?' – bobbyjones

+0

是的。我在答案的最後添加了一個關於這個的句子。 jQuery將瀏覽器事件封裝到提供通用事件屬性的事件對象中,但有時您需要訪問特殊屬性,例如粘貼事件時粘貼的數據。 – kol

0

那麼... originalEvent不是直接從JavaScript的根據我的知識。它是由瀏覽器觸發的。 Jquery包裝了一些更多的屬性,並且來自瀏覽器的原始事件被包裝在originalEvent中。這是我從jQuery網站找到的。

「還需要指出的是,事件對象包含一個名爲originalEvent的屬性,它是瀏覽器自身創建的事件對象.jQuery用一些有用的方法和屬性包裝了這個本地事件對象,但在某些情況下,例如需要通過event.originalEvent訪問原始事件,這對移動設備和平板電腦上的觸摸事件特別有用。「