解決pjax載入頁面不執行js外掛程式的問題

2022-05-08 21:12:09 字數 706 閱讀 6600

在使用jquery.pjax的時候發現載入頁面時不會執行其中的layui以及jquery的初始化方法,包括一些外掛程式的初始化方法。

檢視原始碼後發現該jquery.pjax替換容器內容時,是將伺服器端返回的html轉換為了jquery dom節點然後再執行的替換,但是這樣操作會導致一系列的載入事件不會被觸發,導致例如jquery和layui的初始化方法不會被執行。

於是決定將新增dom節點修改為直接新增html片段。

1.將jquery.pjax.js中311行的 context.html(container.contents)修改為 context.html(data)。

這樣在pjax載入新頁面的時候便會直接將伺服器端返回html片段新增進容器。

但是這樣僅處理了新增頁面,而執行回退操作時pjax會從快取中讀取上乙個頁面的內容,同樣pjax在回退上乙個頁面的時候依然是以dom節點的方式儲存和新增的,所以我們還需要繼續修改。

2.將365行的

cachepush(pjax.state.id, [options.container, clonecontents(context)])
修改為

cachepush(pjax.state.id, [options.container, context.html()])

到此修改完成,此時使用pjax載入新頁面的時候,layui jquery等外掛程式的初始化方法即可正確執行。

JS執行與頁面載入

我是在csdn的技術問答中看到 js中有沒有jquery.ready這樣的方法 這個問題後,再看到兩篇不錯的文章 深入分析jquery的ready函式是如何工作的 工作原理 jquery document ready 與window.onload的區別 js中定義的事件 window.onload或...

頁面自動執行(載入)js

一 js方法 1.最簡單的呼叫方式,直接寫到html的body標籤裡面 load 2.在js語句呼叫 3。js呼叫 onload方法 二 jq方法 1.整個頁面的document全部載入完成以後執行。不幸的這種方式不僅要求頁面的dom tree全部載入完成,而且要求所有的外部和資源全部載入完成。更不...

關於js不執行頁面跳轉

最近做使用者登入跳轉,使用window.location.href來執行跳轉,發現ajax執行登入後,返回了json值 登入成功,立即跳轉頁面!但是,頁面並沒有跳轉,window.location.href沒有執行。後來仔細檢查,發現自己犯了乙個低階錯誤,form的action屬性我是去掉了的,aj...