代码之家  ›  专栏  ›  技术社区  ›  Mysteryos

PJAX成功后执行特定于页面的javascript代码

  •  2
  • Mysteryos  · 技术社区  · 10 年前

    这是我的难题:

    我的网站使用PJAX将HTML加载到每个页面的“#main”容器中。

    每个页面都有自己的特定javascript文件。例如:“dashboard.index.js”、“inbox.index.js”等。 注意:所有库都是通过PreloadJS在第一次加载页面时预加载的,以避免javascript编译开销。

    页面的第一次加载是完美的,不用担心,因为它是正常的HTML加载。

    但是,如果我再次返回此页面,PJAX将不会重新加载javascript文件,因为它已经在DOM中。

    到目前为止我所做的一切;工作不完美:

    1. 将javascript文件放在“main”容器的底部。PJAX将其传输到DOM的“HEAD”,不会第二次加载它。
    2. 在“main”容器中放置内联脚本以执行每个页面的功能。失败,因为代码是在加载JS库之前执行的。
    3. 绑定“PJAX成功”事件并执行函数。无法根据当前加载的页面确定要执行的函数。

    因此,我的问题是:

    是否有任何策略来加载与每个页面相关联的特定javascript文件?

    1 回复  |  直到 10 年前
        1
  •  1
  •   Mysteryos    10 年前

    从pjax加载HTML时,我向div添加了一个“data-js”属性,其中包含成功加载HTML时要调用的函数的名称。

    然后,只需要使用“pjax:success”事件来调用函数。