Jquery load 方法下前進、後退、重新整理問題的解決
做一個後臺管理系統的時候,用到了admin-lte框架。不過其實大部分後臺管理系統都是這樣的設計,即,左邊是可以縮排的選單欄,右邊是內容,使用者點選選單的時候,選單欄和上邊的使用者資訊欄並不會重新載入,也就是不會跳轉到新的頁面,緊緊是更新了右邊的內容模組。
跟大多數人一樣,我使用的是jquery
的load()
方法,如下所示:
<li><a href="javascript:loadMenu('<%=request.getContextPath()%>/commons/redirect.do?path=management/user_list')">使用者列表</a ></li>
<li><a href="javascript:loadMenu('<%=request.getContextPath()%>/commons/redirect.do?path=management/department_list')"></i>歸屬部門</a></li>
...
<script>
function loadMenu(path, parameter) {
$('#main-content').load(path, parameter);
}
$(function () {
var defaultPath = '<%=request.getContextPath()%>/commons/redirect.do?path=task/task_list';
loadMenu(defaultPath);
});
</script>
上述的程式碼中,定義了一個loadMenu方法,按鈕點選的時候呼叫此方法,將新的內容頁面載入到main-content
這個<div>
塊中,實現了選單欄不重新整理、內容變化的功能。當第一次進入此頁面時,自動呼叫loadMenu方法,載入預設頁面。
然而這種實現方式有一種缺陷:當用戶點選前進按鈕、後退按鈕、重新整理按鈕時,由於實際上使用者只訪問了一個頁面,其他的“功能頁面”都是更新此頁面中的main-content
下面提出一種解決方案,實測有效:
...
<script>
$(function () {
$.refresh()
})
function loadMenu(path, parameter) {
$.pushState(path, parameter)
$.loadPage(path, parameter)
}
$.extend(
{
loadPage: function (url, data) {
console.log('loading url: ' + url)
$('#main-content').load(url, data);
},
pushState: function (url, data) {
console.log("pushing state: " + url)
history.pushState({urlStr: url, data: data}, "頁面標題", "?_url=" + url);
},
popState: function () {
window.addEventListener("popstate", function () {
var currentState = history.state
if (currentState != null) {
var url = ".." + currentState.urlStr
console.log('poping state: ' + url)
$.loadPage(url, currentState.data)
}
})
},
refresh: function () {
var currentState = history.state;
if (currentState != null) {
var loadUrl = ".." + currentState.urlStr
console.log('refreshing state: ' + loadUrl)
$.loadPage(loadUrl, currentState.date)
}else{
var defaultPath = '<%=request.getContextPath()%>/commons/redirect.do?path=task/task_list';
loadMenu(defaultPath)
}
}
}
)
$.popState()
</script>
如上述程式碼,我們拓展了popState/refresh方法,當用戶點選前進(後退)、重新整理按鈕時會分別觸發這兩個方法, 然後在方法中獲取到使用者(這裡指我…)期望的路徑,通過load
方法將這些內容載入。
那麼這些“記錄”是如何儲存和獲取的呢?當用戶點選選單(按鈕),呼叫loadMenu
方法時,我們先呼叫pushState方法,將他要訪問的頁面新增到歷史記錄history.pushState
,然後在前進、後退、重新整理時獲取到對應的歷史記錄history.state
,通過load方法載入這些內容飢渴。並且引數也可以通過對應data欄位儲存和獲取。
實測有效,不過還需要考慮,載入頁面後選單欄的active
問題。可以通過傳遞的引數來判斷,修改className,這裡不贅述。
相關推薦
Jquery load 方法下前進、後退、重新整理問題的解決
做一個後臺管理系統的時候,用到了admin-lte框架。不過其實大部分後臺管理系統都是這樣的設計,即,左邊是可以縮排的選單欄,右邊是內容,使用者點選選單的時候,選單欄和上邊的使用者資訊欄並不會重新載入,也就是不會跳轉到新的頁面,緊緊是更新了右邊的內容模組。
JS監聽微信、支付寶等移動app及瀏覽器的返回、後退、上一頁按鈕的事件方法
on() 移動app 自己的 win 功能 監聽 ner tor event $(function(){ pushHistory(); window.addEventListener("popstate", function(e) { alert("我監聽到
Android WebView的前進、後退、與重新整理
mWebView.goBack(); //後退 mWebView.goForward();//前進 mWebView.reload(); //重新整理 //點選後退按鈕,讓WebView後退一頁(也可以覆寫Activity的
Python3 Selenium WebDriver網頁的前進、後退、重新整理、最大化、獲取視窗位置、設定視窗大小、獲取頁面title、獲取網頁原始碼、獲取Url等基本操作
Python3 Selenium WebDriver網頁的前進、後退、重新整理、最大化、獲取視窗位置、設定視窗大小、獲取頁面title、獲取網頁原始碼、獲取Url等基本操作 通過selenium webdriver操作網頁前進、後退、重新整理、最大化、獲取視窗位置、設定視窗大小、獲取頁面title、獲取網頁
很多人都不知道的監聽微信、支付寶等移動app及瀏覽器的返回、後退、上一頁按鈕的事件方法
在實際的應用中,我們常常需要實現在移動app和瀏覽器中點選返回、後退、上一頁等按鈕實現自己的關閉頁面、調整到指定頁面或執行一些其它操作的 需求,那在程式碼中怎樣監聽當點選微信、支付寶、百度糯米、百度錢包等app的返回按鈕或者瀏覽器的上一頁或後退按鈕的事件呢。 我相信很多朋
javascript 前進、後退、重新整理
Main.html頁面 <frameset rows="127,*,11" frameborder="no" border="0" framespacing="0" > <frame src="top.html" name="topFrame" scr
Android WebView載入網頁,實現前進、後退、重新整理、超連結
你也可以檢視我的其他同類文章,也會讓你有一定的收貨! 先在要顯示網頁的佈局檔案中宣告WebView 在Activity中例項化WebView 呼叫WebView的loadUrl( )方法,設定WevView要顯示的網頁 為了讓WebView能夠響應超連結
優雅的實現Activiti動態調整流程(自由跳轉、前進、後退、分裂、前加簽、後加籤等),含範例程式碼!
最近對Activiti做了一些深入的研究,對Activiti的流程機制有了些理解,對動態調整流程也有了一些實踐方法。現在好好總結一下,一來是對這段時間自己辛苦探索的一個記錄,二來也是為後來者指指路~~~如下內容準備採用QA的方式寫,很多問題都是當初自己極疑惑的問題,希望能為大
控制使用jquery load()方法載入新頁面中的元素
三個參數 解決 獲取 參數 頁面 紮實 第一個 之前 簡單 最近在項目中用到jquery的load()方法來加載頁面,首先簡單說一下load()方法。 load(url,data,callback);該方法接收三個參數,第一個是載入的頁面地址,第二個是要傳到服務器的參數,第
監聽瀏覽器返回鍵、後退、上一頁事件(popstate)操作返回鍵
som cnblogs back eba spa 查詢 sta ces 關閉 在WebApp或瀏覽器中,會有點擊返回、後退、上一頁等按鈕實現自己的關閉頁面、調整到指定頁面、確認離開頁面或執行一些其它操作的需求。可以使用 popstate 事件進行監聽返回、後退、上一頁操
jquery load()方法實現區域性重新整理,多張網頁切換(li標籤實現上下頁的切換)
---學習借鑑中--- (1)父頁面插入的位置 <div id="content" > //id為要重新整理顯示的子頁面的內容 </div> (2)父頁面顯示標籤切換不同html頁面 <ul class="userMenu"> <li
移動app手機物理鍵返回、後退、上一頁面並重新載入頁面資料
專案中遇到一個問題,做個筆記。就是在微信網頁上面本來是有返回按鈕的,但是大多數人都為了方便,會使用安卓手機自帶的物理返回鍵,這個返回鍵按下後,上一頁內容獲取最新資料。如圖:需求:常見問題,點選一個問題後
jQuery:load()方法
jquery的load()方法可以載入頁面或資料到指定的元素,通常用於聯動的頁面效果,下面是示例: 一,簡單的載入頁面 <select name="bigSortId" id="bigSortId" onChange="getSmallSort()"> &
Jquery load()方法 實現公用頭部 尾部
//這是header.html裡的程式碼,想作為頭部引進來 <div id="loginBox"> <span></span> <div> <div> &l
jQuery load() 方法
原文連結:http://www.runoob.com/jquery/ajax-load.html 定義和用法 load() 方法從伺服器載入資料,並把返回的資料放置到指定的元素中。 注意:還存在一個名為 load 的 jQuery 事件方法。呼叫哪個,取決
jQuery-Load方法
alt url inf cti 使用 com 獲取數據 easyu jquer 1、load() 介紹:load() 方法通過 AJAX 請求從服務器加載數據,並把返回的數據放置到指定的元素中 該方法是最簡單的從服務器獲取數據的方法。它幾乎與 $.get(url, da
jQuery load() 方法實現載入遠端資料
jQuery load() 方法是簡單但強大的 AJAX 方法。load() 方法從伺服器載入資料,並把返回的資料放入被選元
JQuery的父、子、兄弟節點查找方法
all bsp 集合 val 直接 對象 fin 部分 篩選 jQuery.parent(expr) //找父元素 jQuery.parents(expr) //找到所有祖先元素,不限於父元素 jQuery.children(expr)
Selenium基礎之--01(將瀏覽器最大化,設置瀏覽器固定寬、高,操控瀏覽器前進、後退)
TP IV sleep .get class 需求 靈活 屏幕 web自動化 1,將瀏覽器最大化 我們知道調用啟動的瀏覽器不是全屏的,這樣不會影響腳本的執行,但是有時候會影響我們“觀看”腳本的執行。 coding=utf-8 from selenium import web
JQuery的父、子、兄弟節點查詢方法
jQuery.parent(expr) //找父元素 jQuery.parents(expr) //找到所有祖先元素,不限於父元素 jQuery.chil