什麼是事件接聽程式?

事件接聽程式是 JavaScript 中的一個函數,它等待事件發生,然後對其進行回應。JavaScript 是一種開發人員用來建立互動式網頁的程式設計語言。JavaScript 的事件接聽程式函數可讓您建立對滑鼠點選、鍵盤點擊和視窗大小調整等事件的自訂回應。等待和回應即時事件的程式設計範例稱為事件處理。

閱讀有關 JavaScript 的資訊 »

事件接聽程式函數的語法是什麼?

事件接聽程式函數與其他 JavaScript 函式共用類似的特徵。啟用時,該函數會採取必要的動作來處理事件。例如,事件接聽程式函數可變更顯示的文字、從註冊表單收集資訊,或將資料存放在資料庫中。 

事件接聽程式語法

事件接聽程式函數遵循適當的 JavaScript 語法,如下列範例所示。

function RespondMouseClick() {

            document.getElementById("textdisplay1").innerHTML += "MouseClick happened" ;

        }

此範例顯示了 RespondMouseClick 事件接聽程式函數。編寫函數名稱以反映事件接聽程式的用途很常見。在函數中,您可以撰寫程式碼,以便在事件發生時執行特定動作。在此範例中,函數將文字發生了 MouseClick 附加至 HTML 元素 textdisplay1。 

事件處理常式語法

或者,您可以使用事件處理常式函數,來回應已啟用的事件,如下列範例所示。 

function eventHandler(event) {

  if (event.type === "fullscreenchange") {

console.log (“full screen toggle”);

  } else {

  console.log (“full screen error”);

  }

}

這讓您使用一個功能,即可管理來自特定元素的多種類型的事件。

例如,您可以註冊事件接聽程式,以處理事件型應用程式上的所有類型的區塊鏈事件。 如需詳細資訊,請參閱使用 Amazon Managed Blockchain 建置事件型應用程式的相關資訊。

如何新增事件接聽程式?

只有在將事件接聽程式新增至相應的 JavaScript 元素後,才會啟用事件接聽程式。若要執行該操作,您可以使用如下所示語法:

  • element.addEventListener(event, listener);
  • element.addEventListener(event, listener, useCapture);
  • element.addEventListener(event, listener, options);

例如,開發人員可呼叫下列函數,將點按事件接聽程式繫結至按鈕元素。 

btn.addEventListener("click", RespondMouseClick);

您還可以將多個事件接聽程式新增至特定的事件物件,而不會覆寫現有的事件處理常式。

例如,Amazon Web Services (AWS) 允許開發人員鏈結 AWS.Request 物件上的多個回呼。如需詳細資訊,請參閱如何在 AWS 上使用請求物件事件接聽程式。

用於新增事件的參數

以下是之前語法中參數的解釋:

  • 事件參數是任何有效的 JavaScript 事件,例如點按、變更、滑鼠懸停、按下按鍵和載入。 
  • 接聽程式參數是為回應特定事件而建立的事件回呼或 JavaScript 函數。 
  • useCapture 參數是指示事件傳播模式的選用參數。該參數接受布林值,其中 true 啟用擷取,而 false 則啟用反昇。此參數的預設值設定為 false。 
  • 選項參數由多個選用值組成,包括擷取模式和拒絕訊號,代表接聽程式的行為。 

如何移除事件接聽程式?

事件接聽程式會保持作用中狀態,直至您從關聯的 JavaScript 元素中將其移除。您可以使用下列語法來執行此操作。

element.removeEventListener(type, listener, useCapture);

事件接聽程式移除參數與您用於新增事件接聽程式的參數類似。移除事件接聽程式時,必須指定相同的 type、listener 以及 useCapture 參數。如果不這樣做,事件接聽程式會保持作用中狀態,並繼續觸發未來的事件。

例如,您可以使用下列程式碼來新增事件。

button.addEventListener("click", RespondMouseClick, true);

但套用下列程式碼無法移除事件接聽程式。這是因為 useCapture 值與使用按鈕物件註冊的值不同。 

button.removeEventListener("click", RespondMouseClick, false);

若要成功移除事件並防止其被觸發,您可以使用下列程式碼。

button.removeEventListener("click", RespondMouseClick, true);

巢狀事件接聽程式函數如何運作?

巢狀事件接聽程式是新增至不同階層之 HTML 元素的事件處理常式。

在下列 HTML 範例中,文件擁有基礎父項元素,而父項擁有子項。 

<div class="document">

<div class="parent">

<div class="child"></div>

</div>

</div>

複雜的 Web 應用程式可能具有多個父項-子項層,以及各自的事件接聽程式函數。當發生特定事件時,它會以特定順序在不同層觸發事件接聽程式。例如,按一下子項按鈕,會將事件傳播至擷取滑鼠點按的所有處理常式。

事件可透過兩種模式傳播,即反昇和擷取。 

事件反昇

反昇是處理 JavaScript 事件的預設模式。它會將事件從最內層傳播至最外層。

例如,使用者可將滑鼠懸停於子區段文字方塊上。然後,應用程式可按下列順序傳遞事件:

  1. 子項中的事件接聽程式會處理滑鼠懸停事件。 
  2. 然後,父項事件接聽程式會處理事件,並將控制權傳遞給文件的事件接聽程式。 

若要設定事件反昇,請使用下列語法:

  • element.addEventListener(event, listener, [false]);
  • element.addEventListener(event, listener);

事件擷取

事件擷取是 JavaScript 中的一種特殊事件處理模式,其中事件從最外層傳播至最內層。一旦事件到達內層的目標元素,事件處理模式就會變更為反昇。然後,反昇會將事件向外傳播至最上層。

例如,使用者可點按子項按鈕並啟動下列順序:

  1. 文件事件接聽程式會處理滑鼠點按事件,然後是父項事件處理常式。
  2. 事件到達目標元素,即按鈕。該按鈕的事件接聽程式會處理事件。
  3. 事件處理會從擷取切換至反昇模式。
  4. 相同的滑鼠點按事件在文件結束之前,會觸發父級的事件處理常式。

如何在反昇和擷取之間進行選擇

反昇和擷取可讓您以不同的方式處理事件。很少使用反昇,因為擷取足以處理應用程式中的大多數事件。

當您在反昇和擷取之間做出決定時,應考慮事件傳播流程,以及它如何與應用程式的程式設計邏輯保持一致。 

例如,考慮由兩個子項元素組成的父項表單。當第二個元素發生事件時,第一個元素需要立即更新。在這種情況下,您應使用擷取模式。它可確保父項事件接聽程式會處理事件並更新第一個元素。然後,它會將控制權傳遞給第二個子項元素的事件接聽程式。 

如何停止巢狀事件接聽程式函數中的事件傳播?

事件在以巢狀接聽程式排列到達結束目的地之前會進行傳播。必須使用特定的方法來阻止事件進一步傳播。

下列方法會在事件接聽程式中停止事件。

event.stopPropagation();

例如,如果以子按鈕呼叫 StopPropagation,滑鼠點按事件不會傳播到父項和文件層級。因此,不會觸發更高級別的事件接聽程式。 

停止所有事件傳播

StopPropagation 只會停止目前類型的事件傳播。如果物件已向其註冊不同類型的事件接聽程式,儘管 StopPropagation 呼叫,但仍會觸發。

若要停止與特定物件相關的所有事件,您可以使用如下所示 StopImmediatePropagation 方法。 

 event.stopImmediatePropagation();

當一個事件接聽程式呼叫 StopImmediatePropagation 時,不會觸發與該物件關聯的其他事件接聽程式。

AWS 如何支援您的 JavaScript 需求?

Amazon Web Services (AWS) 提供 AWS SDK for JavaScript,因此您可以透過程式庫和 API 輕鬆地在應用程式中使用服務。

您可以使用 SDK 來開發伺服器端、Web 和行動 Web 應用程式。SDK 支援 JavaScript 執行期,Node.JS 和 React Native,以及跨執行期。這可讓開發人員在不同平台上執行相同的用戶端服務套件。

以下是使用 SDK 的其他優勢:

  • SDK 以 TypeScript 撰寫。這帶來了靜態類型檢查以及類別和模組支援等優勢。
  • SDK 提供中介軟體堆疊,可讓您引入自訂動作。
  • SDK 具有模組化架構。這可讓您僅使用必要的套件來最佳化應用程式效能。

立即註冊 AWS 帳戶,開始使用 JavaScript 應用程式。

AWS 上的後續步驟

查看額外的產品相關資源
查閱開發人員工具服務 
註冊免費帳戶

立即存取 AWS 免費方案。

註冊 
開始在主控台進行建置

開始在 AWS 管理主控台進行建置。

登入