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

在PJAX成功后执行特定于页面的javascript代码,javascript,jquery,html,dom,pjax,Javascript,Jquery,Html,Dom,Pjax,这是我的难题: 我的网站使用PJAX将HTML加载到每个页面的“#main”容器中 每个页面都有自己的特定javascript文件。例如:“dashboard.index.js”、“inbox.index.js”等等。 注意:所有库都是通过PrelodJS在页面的第一次加载时预加载的,以避免javascript编译开销 页面的第一次加载是完美的,不用担心,因为它是一个普通的HTML加载 但是,如果我再次回到这个页面,PJAX将不会重新加载javascript文件,因为它已经在DOM中了 到目前为

这是我的难题:

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

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

页面的第一次加载是完美的,不用担心,因为它是一个普通的HTML加载

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

到目前为止我所尝试的&没有完全奏效:

  • 将javascript文件放在“main”容器的底部。PJAX将其传输到DOM的“头部”,并且不会在第二次加载它
  • 将内嵌脚本放在“主”容器中,以执行每个页面的功能。失败,因为代码在加载JS库之前执行
  • 绑定'PJAX success'事件并执行函数。无法根据当前加载的页面确定要执行的函数
  • 因此,我的问题是:


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

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


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

    我已经解决了这个问题。当stackoverflow允许时,我将发布答案。我建议现在也使用pjax:end代替headi使用
    end
    事件,因为我发现pjax没有在
    window.onpopstate
    上执行脚本@罗纳德谢谢你给我的提示Shello@Mysteryos。我面临同样的问题,希望加载特定于页面的JS。你是说你在div中添加了一个datajs属性,是fragmentdiv吗?我有这样一个问题:那么是.content应该有datajs属性吗?那么,在datajs中是否有“dashboard.index.js”,因此在pjax:end上,它执行jQuery getScript($(this.attr('data-js'))来加载脚本?希望你能帮助我!通常,您有一个app.js,可以在每个页面上加载。它将包含加载页面特定编码的所有逻辑:嗨,又是Mysteryos。我发现在正在加载的页面上,我们可以使用type=“text/javascript”的scrip标记,然后这些标记将被加载?如果你知道这一点,你有什么理由选择自己的解决方案吗?