AMP

AMP 電子郵件中的動作和事件

重要事項:本文件不適用於您目前選擇的格式 stories

本文件涵蓋 AMP 電子郵件格式的動作和事件。請閱讀 動作和事件,以了解 AMP 網站、故事和廣告。

on 屬性用於在元素上安裝事件處理器。支援的事件取決於元素。

語法的值是一種簡單的網域特定語言,形式如下

eventName:targetId[.methodName[(arg1=value, arg2=value)]]

請參閱下表,以取得語法各部分的說明。

語法 是否必要? 說明
eventName 這是元素公開的事件名稱。
targetId 這是元素的 DOM ID,或是您想要在事件回應中執行動動作的預定義特殊目標。在以下範例中,targetIdamp-lightbox 目標的 DOM ID,photo-slides
<amp-lightbox id="photo-slides"></amp-lightbox>
<button on="tap:photo-slides">Show Images</button>
methodName 適用於具有預設動作的元素。

這是目標元素 (由 targetId 參照) 公開的方法,您希望在事件觸發時執行該方法。

AMP 具有元素可以實作的預設動作概念。因此,當省略 methodName 時,AMP 將執行該預設方法。

arg=value 某些動作 (若有文件說明) 可能接受引數。引數在括號之間以 key=value 符號定義。接受的值如下
  • 簡單的未加引號字串:simple-value
  • 加引號的字串:"string value"'string value'
  • 布林值:truefalse
  • 數字:111.1
  • 事件資料的點語法參照:event.someDataVariableName

處理多個事件

您可以透過使用分號 ; 分隔事件,以監聽元素上的多個事件。

範例:on="submit-success:lightbox1;submit-error:lightbox2"

一個事件的多個動作

您可以透過使用逗號「,」分隔動作,為同一個事件依序執行多個動作。

範例:on="tap:target1.actionA,target2.actionB"

全域定義的事件和動作

AMP 全域定義了 tap 事件,您可以在任何 HTML 元素 (包括 AMP 元素) 上監聽該事件。

AMP 也全域定義了 hideshowtoggleVisibility 動作,您可以在任何 HTML 元素上觸發這些動作。

只有當元素先前透過 hidetoggleVisibility 動作,或使用 hidden 屬性隱藏時,才能顯示該元素。show 動作不支援透過 CSS display:none 或 AMP 的 layout=nodisplay 隱藏的元素。

例如,以下在 AMP 中是可行的

<div id="warning-message">Warning...</div>

<button on="tap:warning-message.hide">Cool, thanks!</button>

元素特定的事件

* - 所有元素

事件 說明
tap 當元素被點擊/輕觸時觸發。

輸入元素

事件 說明 元素 資料
change 當元素的值變更並提交時觸發。

資料屬性與 HTMLInputElementHTMLSelectElement 中的屬性相同。

input
event.min
event.max
event.value
event.valueAsNumber
input[type="radio"],
input[type="checkbox"]
event.checked
select
event.min
event.max
event.value
input-debounced 當元素的值變更時觸發。這與標準 change 事件類似,但只會在輸入的值停止變更後經過 300 毫秒時觸發。 觸發 input 事件的元素。 change 事件資料相同。
input-throttled 當元素的值變更時觸發。這與標準 change 事件類似,但會限制為在輸入的值變更時最多每 100 毫秒觸發一次。 觸發 input 事件的元素。 change 事件資料相同。

amp-accordion > section

事件 說明 資料
expand 當手風琴 (accordion) 區段展開時觸發。 無。
collapse 當手風琴 (accordion) 區段摺疊時觸發。 無。

amp-carousel[type="slides"]

事件 說明 資料
slideChange 當輪播 (carousel) 的目前投影片變更時觸發。
// Slide number.
event.index

amp-lightbox

事件 說明 資料
lightboxOpen 當燈箱 (lightbox) 完全可見時觸發。
lightboxClose 當燈箱 (lightbox) 完全關閉時觸發。

amp-list

事件 說明 資料
fetch-error(低信任) 當擷取資料失敗時觸發。

amp-selector

事件 說明 資料
select 當選項被選取或取消選取時觸發。
// Target element's "option" attribute value.
event.targetOption

// Array of "option" attribute values of all selected elements.
event.selectedOptions

amp-sidebar

事件 說明 資料
sidebarOpen 當側邊欄在轉換結束後完全開啟時觸發。
sidebarClose 當側邊欄在轉換結束後完全關閉時觸發。

amp-state

事件 說明 資料
fetch-error(低信任) 當擷取資料失敗時觸發。

form

事件 說明 資料
submit 當表單提交時觸發。
submit-success 當表單提交回應成功時觸發。
// Response JSON.
event.response
submit-error 當表單提交回應錯誤時觸發。
// Response JSON.
event.response
valid 當表單有效時觸發。
invalid 當表單無效時觸發。

元素特定的動作

* (所有元素)

動作 說明
hide 隱藏目標元素。
show 顯示目標元素。如果 autofocus 元素因此變得可見,則會取得焦點。
toggleVisibility 切換目標元素的能見度。如果 autofocus 元素因此變得可見,則會取得焦點。
toggleClass(class=STRING, force=BOOLEAN) 切換目標元素的類別。force 是選用的,如果已定義,則可確保如果設定為 true,則只會新增類別但不會移除,如果設定為 false,則只會移除但不會新增。
toggleChecked(force=BOOLEAN) 切換目標元素的核取狀態。force 是選用的,如果已定義,則可確保產生的狀態會與 force 的值相同。
focus 使目標元素取得焦點。若要失去焦點,請對另一個元素 (通常是父元素) 執行 focus。我們強烈建議基於協助工具考量,不要透過將焦點放在 body/documentElement 上來失去焦點。

amp-accordion

動作 說明
toggle(section=STRING) 切換 amp-accordion 區段的 expandedcollapsed 狀態。當在未呼叫引數的情況下呼叫時,它會切換手風琴 (accordion) 的所有區段。透過提供區段 ID 在特定區段上觸發:on="tap:myAccordion.toggle(section='section-id')"
expand(section=STRING) 展開手風琴 (accordion) 的區段。如果區段已展開,則會保持展開。當在未呼叫引數的情況下呼叫時,它會展開手風琴 (accordion) 的所有區段。透過提供區段 ID 在特定區段上觸發:on="tap:myAccordion.expand(section='section-id')"
collapse(section=STRING) 摺疊手風琴 (accordion) 的區段。如果區段已摺疊,則會保持摺疊。當在未呼叫引數的情況下呼叫時,它會摺疊手風琴 (accordion) 的所有區段。透過提供區段 ID 在特定區段上觸發:on="tap:myAccordion.collapse(section='section-id')"

amp-carousel[type="slides"]

動作 說明
goToSlide(index=INTEGER) 將輪播 (carousel) 前進到指定的投影片索引。

amp-image-lightbox

動作 說明
open (預設) 開啟圖片燈箱 (lightbox),來源圖片是觸發動作的圖片。

amp-lightbox

動作 說明
open (預設) 開啟燈箱 (lightbox)。
close 關閉燈箱 (lightbox)。

amp-list

動作 說明
changeToLayoutContainer amp-list 的版面配置更新為 layout="CONTAINER",以允許動態調整大小
refresh src 重新整理資料並重新轉譯清單。

amp-selector

動作 說明
clear 清除定義的 amp-selector 中的所有選取項目。
selectUp(delta=INTEGER) 將選取項目向上移動 delta 的值。預設 delta 設定為 -1。如果未選取任何選項,則選取狀態將變成最後一個選項的值。
selectDown(delta=INTEGER) 將選取項目向下移動 delta 的值。預設 delta 設定為 1。如果未選取任何選項,則選取狀態將變成第一個選項的值。
toggle(index=INTEGER, value=BOOLEAN) 切換 selected 的應用程式。如果 select 屬性不存在,則此動作會新增它。如果 select 屬性存在,則此動作會移除它。您可以透過在 value 引數中包含布林值來強制並保持新增或移除。值 true 將強制新增 selected 屬性,且如果已存在則不會移除。值 false 將移除屬性,但如果不存在則不會新增。

amp-sidebar

動作 說明
open (預設) open
close close
toggle 切換側邊欄的狀態。

form

動作 說明
clear clear
submit submit

特殊目標

以下是 AMP 系統提供的目標,具有特殊需求

目標:AMP

AMP 目標由 AMP 執行階段提供,並實作適用於整個文件的最上層動作。

動作 說明
setState({foo: 'bar'})1

需要 amp-bind

將物件常值合併到可繫結狀態。

1當與多個動作搭配使用時,後續動作將等待 setState() 完成後再叫用。每個事件僅允許單一 setState()