htmxはライブラリの主要な焦点ではありませんが、主に拡張機能の開発またはイベントの処理を目的とした、小さなAPIヘルパーメソッドを提供しています。
hyperscriptプロジェクトは、htmxベースのアプリケーションにより広範なスクリプトサポートを提供することを目的としています。
htmx.addClass()
このメソッドは、指定された要素にクラスを追加します。
elt
- クラスを追加する要素class
- 追加するクラスまたは
elt
- クラスを追加する要素class
- 追加するクラスdelay
- クラスが追加されるまでの遅延(ミリ秒) // add the class 'myClass' to the element with the id 'demo'
htmx.addClass(htmx.find('#demo'), 'myClass');
// add the class 'myClass' to the element with the id 'demo' after 1 second
htmx.addClass(htmx.find('#demo'), 'myClass', 1000);
htmx.ajax()
htmxスタイルのAJAXリクエストを発行します。このメソッドはPromiseを返すため、コンテンツがDOMに挿入された後にコールバックを実行できます。
verb
- ‘GET’、 ‘POST’などpath
- AJAXを実行するURLパスelement
- ターゲットにする要素(デフォルトはbody
)または
verb
- ‘GET’、 ‘POST’などpath
- AJAXを実行するURLパスselector
- ターゲットのセレクタまたは
verb
- ‘GET’、 ‘POST’などpath
- AJAXを実行するURLパスcontext
- 以下のいずれかを含むコンテキストオブジェクトsource
- リクエストのソース要素。リクエストに影響を与えるhx-*
属性は、その要素とその祖先に対して解決されますevent
- リクエストを「トリガー」したイベントhandler
- レスポンスHTMLを処理するコールバックtarget
- レスポンスをスワップするターゲットswap
- ターゲットに対してレスポンスをどのようにスワップするかvalues
- リクエストと共に送信する値headers
- リクエストと共に送信するヘッダーselect
- レスポンスからスワップするコンテンツを選択できます // issue a GET to /example and put the response HTML into #myDiv
htmx.ajax('GET', '/example', '#myDiv')
// issue a GET to /example and replace #myDiv with the response
htmx.ajax('GET', '/example', {target:'#myDiv', swap:'outerHTML'})
// execute some code after the content has been inserted into the DOM
htmx.ajax('GET', '/example', '#myDiv').then(() => {
// this code will be executed after the 'htmx:afterOnLoad' event,
// and before the 'htmx:xhr:loadend' event
console.log('Content inserted successfully!');
});
htmx.closest()
指定された要素の親から、要素自身を含めて、最も近い一致する要素を見つけます。
elt
- セレクタを探す要素selector
- 探すセレクタ // find the closest enclosing div of the element with the id 'demo'
htmx.closest(htmx.find('#demo'), 'div');
htmx.config
htmxが実行時に使用する構成を保持するプロパティ。
メタタグを使用することが、これらのプロパティを設定するための推奨されるメカニズムであることに注意してください。
attributesToSettle:["class", "style", "width", "height"]
- 文字列の配列:セトリングフェーズ中にセトルする属性refreshOnHistoryMiss:false
- 真偽値:true
に設定すると、htmxは履歴ミス時にAJAXリクエストを使用するのではなく、フルページリフレッシュを発行しますdefaultSettleDelay:20
- 整数:コンテンツスワップの完了と属性のセトリング間のデフォルトの遅延defaultSwapDelay:0
- 整数:サーバーからのレスポンスの受信とスワップの実行間のデフォルトの遅延defaultSwapStyle:'innerHTML'
- 文字列:hx-swap
が省略された場合に使用するデフォルトのスワップスタイルhistoryCacheSize:10
- 整数:履歴サポートのためにlocalStorage
に保持するページ数historyEnabled:true
- 真偽値:履歴を使用するかどうかincludeIndicatorStyles:true
- 真偽値:trueの場合、htmxは少量のCSSをページに挿入して、htmx-indicator
クラスが存在しない限りインジケーターを非表示にしますindicatorClass:'htmx-indicator'
- 文字列:リクエストが進行中のときにインジケーターに配置するクラスrequestClass:'htmx-request'
- 文字列:リクエストが進行中のときにトリガー要素に配置するクラスaddedClass:'htmx-added'
- 文字列:htmxがDOMに追加した要素に一時的に配置するクラスsettlingClass:'htmx-settling'
- 文字列:htmxがセトリングフェーズにあるときにターゲット要素に配置するクラスswappingClass:'htmx-swapping'
- 文字列:htmxがスワップフェーズにあるときにターゲット要素に配置するクラスallowEval:true
- 真偽値:htmxでevalのような機能の使用を許可し、hx-vars
、トリガー条件、スクリプトタグの評価を有効にします。CSP互換性のためにfalse
に設定できます。allowScriptTags:true
- 真偽値:新しいコンテンツでスクリプトタグの評価を許可しますinlineScriptNonce:''
- 文字列:インラインスクリプトに追加するnonceinlineStyleNonce:''
- 文字列:インラインスタイルに追加するnoncewithCredentials:false
- 真偽値:Cookie、認証ヘッダー、TLSクライアント証明書などの資格情報を使用して、クロスサイトのアクセス制御リクエストを許可しますtimeout:0
- 整数:リクエストが自動的に終了されるまでに許容されるミリ秒数wsReconnectDelay:'full-jitter'
- 文字列/関数:イベントコードAbnormal Closure
、Service Restart
、またはTry Again Later
による予期しない接続切断後に再接続するためのgetWebSocketReconnectDelay
のデフォルト実装wsBinaryType:'blob'
- 文字列:WebSocket接続を介して受信されるバイナリデータのタイプdisableSelector:"[hx-disable], [data-hx-disable]"
- 文字列の配列:htmxは、この属性が設定されている要素または親要素を処理しませんscrollBehavior:'instant'
- 文字列:show修飾子をhx-swap
と共に使用する場合のスクロール動作。許可される値は、instant
(スクロールは1回のジャンプで瞬時に行われる必要があります)、smooth
(スクロールはスムーズにアニメーション化する必要があります)、およびauto
(スクロール動作はscroll-behaviorの計算値によって決定されます)です。defaultFocusScroll:false
- 真偽値:フォーカスされている要素をビューポートにスクロールする必要があるかどうか。focus-scrollスワップ修飾子を使用してオーバーライドできますgetCacheBusterParam:false
- 真偽値: true に設定すると、htmx はターゲット要素を `org.htmx.cache-buster=targetElementId` の形式で GET リクエストに追加します。globalViewTransitions:false
- 真偽値:true
に設定すると、htmxは新しいコンテンツをスワップするときにView Transition APIを使用します。methodsThatUseUrlParams:["get", "delete"]
- 文字列の配列:htmxは、リクエストボディではなくURLにパラメータをエンコードすることにより、これらのメソッドでリクエストをフォーマットしますselfRequestsOnly:true
- 真偽値:現在のドキュメントと同じドメインへのAJAXリクエストのみを許可するかどうかignoreTitle:false
- 真偽値:true
に設定すると、htmxは新しいコンテンツにtitle
タグが見つかったときにドキュメントのタイトルを更新しませんscrollIntoViewOnBoost:true
- 真偽値: ブーストされた要素のターゲットをビューポートにスクロールするかどうか。ブーストされた要素で `hx-target` が省略されている場合、ターゲットはデフォルトで `body` になり、ページが上部にスクロールします。triggerSpecsCache:null
- オブジェクト: 評価されたトリガースペックを保存するキャッシュ。メモリ使用量を増やす代わりに解析パフォーマンスを向上させます。単純なオブジェクトを定義して、決してクリアされないキャッシュを使用するか、プロキシオブジェクトを使用して独自のシステムを実装できます。htmx.config.responseHandling:[...]
- HtmxResponseHandlingConfig[]:レスポンスステータスコードのデフォルトのレスポンス処理動作は、ここでスワップまたはエラーのいずれかに構成できますhtmx.config.allowNestedOobSwaps:true
- 真偽値: メインレスポンス要素内にネストされている要素で OOB スワップを処理するかどうか。 ネストされた OOB スワップ を参照してください。 // update the history cache size to 30
htmx.config.historyCacheSize = 30;
htmx.createEventSource
新しいServer Sent Eventソースを作成するために使用されるプロパティ。これは、カスタムSSEセットアップを提供するために更新できます。
func(url)
- URL文字列を受け取り、新しいEventSource
を返す関数 // override SSE event sources to not use credentials
htmx.createEventSource = function(url) {
return new EventSource(url, {withCredentials:false});
};
htmx.createWebSocket
新しいWebSocketを作成するために使用されるプロパティ。これは、カスタムWebSocketセットアップを提供するために更新できます。
func(url)
- URL文字列を受け取り、新しいWebSocket
を返す関数 // override WebSocket to use a specific protocol
htmx.createWebSocket = function(url) {
return new WebSocket(url, ['wss']);
};
htmx.defineExtension()
新しいhtmx 拡張機能を定義します。
name
- 拡張機能名ext
- 拡張機能の定義 // defines a silly extension that just logs the name of all events triggered
htmx.defineExtension("silly", {
onEvent : function(name, evt) {
console.log("Event " + name + " was triggered!")
}
});
htmx.find()
セレクタに一致する要素を見つけます
selector
- 一致させるセレクタまたは
elt
- 一致する要素を探すルート要素(ルート要素を含む)selector
- 一致させるセレクタ // find div with id my-div
var div = htmx.find("#my-div")
// find div with id another-div within that div
var anotherDiv = htmx.find(div, "#another-div")
htmx.findAll()
セレクタに一致するすべての要素を見つけます
selector
- 一致させるセレクタまたは
elt
- 一致する要素を探すルート要素(ルート要素を含む)selector
- 一致させるセレクタ // find all divs
var allDivs = htmx.findAll("div")
// find all paragraphs within a given div
var allParagraphsInMyDiv = htmx.findAll(htmx.find("#my-div"), "p")
htmx.logAll()
すべてのhtmxイベントをログに記録します。デバッグに役立ちます。
htmx.logAll();
htmx.logNone()
htmxイベントをログに記録しません。以前にデバッガーを有効にした場合は、これを呼び出して無効にします。
htmx.logNone();
htmx.logger
htmxがログ記録に使用するロガー
func(elt, eventName, detail)
- 要素、イベント名、イベント詳細を受け取り、それをログに記録する関数 htmx.logger = function(elt, event, data) {
if(console) {
console.log("INFO:", event, elt, data);
}
}
htmx.off()
要素からイベントリスナーを削除します
eventName
- リスナーを削除するイベント名listener
- 削除するリスナーまたは
target
- リスナーを削除する要素eventName
- リスナーを削除するイベント名listener
- 削除するリスナー // remove this click listener from the body
htmx.off("click", myEventListener);
// remove this click listener from the given div
htmx.off("#my-div", "click", myEventListener)
htmx.on()
要素にイベントリスナーを追加します
eventName
- リスナーを追加するイベント名listener
- 追加するリスナーoptions
- イベントリスナーに追加するオプションオブジェクト(またはuseCaptureブール値)(オプション)または
target
- リスナーを追加する要素eventName
- リスナーを追加するイベント名listener
- 追加するリスナーoptions
- イベントリスナーに追加するオプションオブジェクト(またはuseCaptureブール値)(オプション) // add a click listener to the body
var myEventListener = htmx.on("click", function(evt){ console.log(evt); });
// add a click listener to the given div
var myEventListener = htmx.on("#my-div", "click", function(evt){ console.log(evt); });
// add a click listener to the given div that should only be invoked once
var myEventListener = htmx.on("#my-div", "click", function(evt){ console.log(evt); }, { once: true });
htmx.onLoad()
htmx:load
イベントのコールバックを追加します。これは、例えばJavaScriptライブラリでコンテンツを初期化するなど、新しいコンテンツを処理するために使用できます。
callback(elt)
- 新しくロードされたコンテンツで呼び出されるコールバック htmx.onLoad(function(elt){
MyLibrary.init(elt);
})
htmx.parseInterval()
htmxが行う方法と一致する間隔文字列を解析します。タイミング関連の属性を持つプラグインに役立ちます。
注意:整数に続けてs
またはms
を受け入れます。その他のすべての値はparseFloat
を使用します
str
- タイミング文字列 // returns 3000
var milliseconds = htmx.parseInterval("3s");
// returns 3 - Caution
var milliseconds = htmx.parseInterval("3m");
新しいコンテンツを処理し、htmxの動作を有効にします。これは、通常のhtmxリクエストサイクル以外でDOMに追加されたコンテンツがあり、それでもhtmx属性を機能させたい場合に役立ちます。
elt
- 処理する要素 document.body.innerHTML = "<div hx-get='/example'>Get it!</div>"
// process the newly added content
htmx.process(document.body);
htmx.remove()
DOMから要素を削除します
elt
- 削除する要素または
elt
- 削除する要素delay
- 要素が削除されるまでの遅延(ミリ秒) // removes my-div from the DOM
htmx.remove(htmx.find("#my-div"));
// removes my-div from the DOM after a delay of 2 seconds
htmx.remove(htmx.find("#my-div"), 2000);
htmx.removeClass()
指定された要素からクラスを削除します
elt
- クラスを削除する要素class
- 削除するクラスまたは
elt
- クラスを削除する要素class
- 削除するクラスdelay
- クラスが削除されるまでの遅延(ミリ秒) // removes .myClass from my-div
htmx.removeClass(htmx.find("#my-div"), "myClass");
// removes .myClass from my-div after 6 seconds
htmx.removeClass(htmx.find("#my-div"), "myClass", 6000);
htmx.removeExtension()
htmxから指定された拡張機能を削除します
name
- 削除する拡張機能の名前 htmx.removeExtension("my-extension");
htmx.swap()
HTMLコンテンツのスワップ(およびセトリング)を実行します
target
- スワップターゲットのHTML要素または文字列セレクターcontent
- スワップされるコンテンツの文字列表現swapSpec
- hx-swap
からのパラメータを表すスワップ仕様swapStyle
(必須) - スワップスタイル (innerHTML
、outerHTML
、beforebegin
など)swapDelay
、settleDelay
(数値) - それぞれスワップとセトリング前の遅延transition
(ブール値) - スワップにHTMLトランジションを使用するかどうかignoreTitle
(ブール値) - ページタイトルの更新を無効にしますhead
(文字列) - head
タグの処理方法 (merge
または append
) を指定します。headの処理を無効にするには、空のままにします。scroll
、scrollTarget
、show
、showTarget
、focusScroll
- スワップ後のスクロール処理を指定しますswapOptions
- スワップの追加の*オプション*パラメータselect
- スワップされるコンテンツのセレクター (hx-select
と同等)selectOOB
- 帯域外でスワップされるコンテンツのセレクター (hx-select-oob
と同等)eventInfo
- htmx:afterSwap
および htmx:afterSettle
要素に添付されるオブジェクトanchor
- スクロールをトリガーしたアンカー要素。セトリング時にビューにスクロールされます。完全なスクロール処理に代わる簡単な代替手段を提供しますcontextElement
- スワップ操作のコンテキストとなるDOM要素。現在、特定の要素に対して有効になっている拡張機能を見つけるために使用されますafterSwapCallback
、afterSettleCallback
- それぞれスワップとセトリング後に呼び出されるコールバック関数。引数を取りません // swap #output element inner HTML with div element with "Swapped!" text
htmx.swap("#output", "<div>Swapped!</div>", {swapStyle: 'innerHTML'});
htmx.takeClass()
兄弟要素から指定されたクラスを取得するため、兄弟要素の中で、指定された要素だけがクラスを持ちます。
elt
- クラスを取得する要素class
- 取得するクラス // takes the selected class from tab2's siblings
htmx.takeClass(htmx.find("#tab2"), "selected");
htmx.toggleClass()
要素の指定されたクラスを切り替えます
elt
- クラスを切り替える要素class
- 切り替えるクラス // toggles the selected class on tab2
htmx.toggleClass(htmx.find("#tab2"), "selected");
htmx.trigger()
要素で指定されたイベントをトリガーします
elt
- イベントをトリガーする要素name
- トリガーするイベントの名前detail
- イベントの詳細 // triggers the myEvent event on #tab2 with the answer 42
htmx.trigger("#tab2", "myEvent", {answer:42});
htmx.values()
htmx値解決メカニズムを介して指定された要素に対して解決される入力値を返します
elt
- 値を解決する要素リクエストタイプ
- リクエストタイプ (例: get
または post
)。GET以外の場合、要素を囲むフォームが含まれます。デフォルトは post
です // gets the values associated with this form
var values = htmx.values(htmx.find("#myForm"));