防止美元.Pjax从移动动态脚本标签到头部部分

Prevent $.pjax from moving dynamic script tags to the head section

本文关键字:标签 脚本 头部部 动态 移动 美元 Pjax      更新时间:2023-09-26

我们实现$。几个月前在CodeIgniter应用程序中使用了pjax。它似乎工作得很完美。最近用户开始抱怨一些按钮有时会有奇怪的行为。调试一段时间后,我们发现PJAX正在将脚本标记从新加载的片段移动到文档的头部部分。

这很好,你会认为,因为标题和css资源也被移动到头部。我们可以从中受益(pushstate,浏览器选项卡名称,…)。

遗憾的是,点击另一个pjax链接不会删除这些添加的脚本/css标签。当在其他新添加的脚本中存在对具有相同id或类的元素的绑定时,这会变得很奇怪。它容易把东西弄坏。

有没有人知道如何删除早期添加的脚本标签(不是全部,只有那些由pjax添加)?目前唯一的出路是放弃pjax..但是我太喜欢它了

正如这个问题的标题所暗示的,我们认为最简单的方法可能是防止$。

我问这个问题已经有一段时间了。我们找到了一个解决这个pjax行为的方法。

pjax只移动"链接"的javascript和CSS源。当代码在部分中时,它将停留在相同的位置,并在部分内容添加到DOM后执行

在Github有人建议在<script>标签上使用context="inline",不应该移动到<head>部分。

所以我们的解决方案在局部视图脚本:

<script type="text/javascript" context="inline">
    <?= file_get_contents(js_url().'controllers/'.$jsController.'.js'); ?>
</script>

显然,在使用PHP读取文件之前应该检查文件是否存在。

    这个Github"问题"为我们指明了正确的方向
  • 关于这个话题的另一个对话
相关文章: