You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTMX新加载页面中外库失效:求更简洁解决方案及优势说明

HTMX动态加载脚本依赖失效的简洁解决方案

一、最简解决方案

直接在首页预加载ag-grid-community.min.js,移除动态页面中的外部脚本引用,仅保留初始化逻辑:

修改后的首页代码

<h1>Welcome to the Base Page</h1>
<button hx-get="sample_page" hx-trigger="click" hx-target="#content">Load Table Page</button>
<div id="content"></div>
<script defer src="persist@3.min.js"></script>
<script defer src="alpine@3.14.min.js"></script>
<script src="htmx.min.js"></script>
<!-- 提前预加载ag-grid依赖 -->
<script defer src="ag-grid-community.min.js"></script>

修改后的sample_page代码

<div id="myGrid" style="height: 500px; width: 100%"></div>
<script>
    const gridOptions = {
        rowData: [{make: "Tesla", model: "Model Y", price: 64950, electric: true}], 
        columnDefs: [{field: "make"}, {field: "model"}, {field: "price"}, {field: "electric"}]
    }; 
    const myGridElement = document.querySelector('#myGrid'); 
    agGrid.createGrid(myGridElement, gridOptions);
</script>

二、该方案优于原示例的原因

  • 彻底解决时序问题:原示例中,动态页面的内联初始化脚本会在外部ag-grid-community.min.js加载完成前执行,导致agGrid未定义报错。预加载后,依赖全局就绪,初始化逻辑可直接执行。
  • 避免重复资源请求:原示例每次点击加载按钮都会重新请求ag-grid-community.min.js,预加载仅请求一次,减少带宽消耗和浏览器资源占用。
  • 代码逻辑更清晰:无需额外编写脚本加载的回调、事件监听等冗余代码,依赖管理更直观,维护成本更低。

内容的提问来源于stack exchange,提问作者Rinshan Kolayil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 09:07:20