事件 - htmx:load

当新的 Dom 通过 htmx 加载到页面时发生该事件。

值得注意的是,在页面全局监听该事件时,页面首次加载也会触发该事件。如果 hx-get 等请求返回的内容不包含任何 html 的标签(即不含 Dom)则该事件不会被触发。

事件参数

  • detail.elt - 新添加的元素

示例代码

<body>
    <button onclick="fetchData()">Test1</button>
    <button hx-get="/test" hx-target="body">Test2</button>
    <button hx-get="/test/dom" hx-target="body">Test3</button>
</body>
<script>
    function fetchData() {
        fetch('/test')
            .then(response => response.text())
            .then(data => {
                console.log(data);
                alert(data);
            })
            .catch(error => console.error('Error:', error));
    }
    document.body.addEventListener('htmx:load', function(event) {
        console.log('HTMX content loaded:', event.detail.elt);
    });
</script>

以上示例代码中,点击 Test1 按钮时,htmx:load 事件不会被触发;同样地,点击 Test2 事件时,因为 /test 路径返回的是一个纯文本字符串,htmx:load 事件也不会被触发;只有点击 Test3 按钮时,因为 /test/dom 路径返回的内容是 <div>Hello, Get test with DOM!</div>,会在页面上添加一个 div ,所以 htmx:load 事件会被触发,在浏览器控制台打印出 HTMX content loaded 的文本。