2

我有第一次使用 pjax 的 wordpress 网站。我希望能够更新#main 容器,以及主容器外部的 div,我将其用于拉伸背景滑块。

背景滑块写入 html,以及为滑块分配设置的脚本标记。通过使用innerHTML(我选择它而不是jquery的html()来保留脚本),我能够将滑块的html移动到#main容器之外的适当位置。那时我注意到脚本标签似乎根本没有在 pjax 请求中返回。

是否有任何解决方法可以保留脚本标签,或者以某种方式在调用中检索它?在 pjax 加载后是否需要单独的 ajax 调用来获取我的脚本标签信息?

谢谢!

4

1 回答 1

1

这是一个很好的问题,也让我头疼了一段时间。

不幸的是,PJAX 不会导致页面重新解析或重新编译 JavaScript,尽管它会遍历新的 DOM 并注册新的事件处理程序。

这意味着,如果您在使用 PJAX 加载的内容中有 JavaScript 调用,则需要将它们调用的函数加载到原始文档中。

因此,您可以使用 onClick 加载图像以在灯箱中弹出更大的版本,但前提是您在加载原始页面时加载灯箱 JavaScript 函数。

非常简单的例子:

在原始 HTML 页面中:

<script type="text/javascript" src="lightbox.js" />

在 PJAX 加载的内容中:

<img src="small-image.jpg" onClick="javascript:show_lightbox('big0image.jpg');" />

但是,如果您在原始页面中没有脚本元素并尝试使用 PJAX 加载它,它将无法正常工作。

于 2013-11-11T21:14:50.147 回答