Skip to content

Commit 289534b

Browse files
authored
fix after page changed
1 parent f03a2f0 commit 289534b

File tree

1 file changed

+58
-23
lines changed

1 file changed

+58
-23
lines changed

tmp/uccustomize.js

Lines changed: 58 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
// 將參數分割為 key value
2828
pkey = param.split('=')[0] || '';
2929
pval = param.split('=')[1] || '';
30-
// 不處理 is_ajax
31-
if (pkey == 'is_ajax') continue;
30+
// 不處理 is_ajax 與 page
31+
if (pkey == 'is_ajax' || pkey == 'page') continue;
3232
// 若未建過則建新陣列
3333
if (!pmap[pkey]) {
3434
pmap[pkey] = pval.split(',');
@@ -304,29 +304,51 @@
304304
}
305305
});
306306
},
307+
// 初始化分頁按鈕
308+
_initPagin: function () {
309+
var wgt = this;
310+
// 重新綁定分頁鈕的 click
311+
$('.pagination a').off()
312+
.click(function(e){
313+
e.preventDefault();
314+
wgt.ajaxLoad($(this).attr('href'));
315+
})
316+
},
307317
// 更新頁面
308-
ajaxLoad: function () {
318+
ajaxLoad: function (n, opts) {
309319
// 打開遮罩
310320
loading();
311-
// 建立參數
312-
this._buildParams();
313-
// 取得不帶參數的 url
314-
var n = window.location.href.split('?')[0]
315-
p = [],
316-
wgt = this;
317-
// 組出 ajax url
318-
n += '?';
319-
for (var key in this._params) {
320-
// 將所有參數加入陣列
321-
// 陣列 ['1', '2', '3'].join(',') => 字串 '1,2,3'
322-
p.push(key+'='+this._params[key].join(','));
321+
var wgt = this;
322+
if (!n) {
323+
var p = [];
324+
// 建立參數
325+
this._buildParams();
326+
// 取得不帶參數的 url
327+
n = window.location.href.split('?')[0]
328+
// 組出 ajax url
329+
n += '?';
330+
for (var key in this._params) {
331+
// 將所有參數加入陣列
332+
// 陣列 ['1', '2', '3'].join(',') => 字串 '1,2,3'
333+
p.push(key+'='+this._params[key].join(','));
334+
}
335+
// 陣列 ['a=1', 'b=2'].join('&') => 字串 'a=1&b=2'
336+
n += p.join('&');
323337
}
324-
// 陣列 ['a=1', 'b=2'].join('&') => 字串 'a=1&b=2'
325-
n += p.join('&');
338+
n = decodeURIComponent(n);
339+
// 若有 is_ajax=true 就先清掉
340+
n = n.replace('is_ajax=true', '');
326341
// 存下本次 URL
327342
this._previousURL = n;
328-
if (window.history && window.history.pushState) {
329-
window.history.pushState(n, document.title, n);
343+
// 如果未指明要略過更新 history 便更新 history
344+
if (!opts || !opts.skipPushHistory) {
345+
if (window.history && window.history.pushState) {
346+
var state = {
347+
type: 'ucstate',
348+
url: n
349+
};
350+
window.history.pushState(state, document.title, n);
351+
}
330352
}
331353
$.ajax({
332354
url: n,
@@ -362,7 +384,7 @@
362384
$dir.css({
363385
'position': 'fixed', 'left': '0', 'top': '0', 'right': '0', 'bottom': '0',
364386
'margin': '20px', 'padding': '20px', 'border-radius': '15px', 'z-index': '999999',
365-
'background-color': 'white', 'color': '#DD406F', 'font-size': '28px',
387+
'background-color': 'white', 'color': '#DD406F', 'font-size': '22px',
366388
'overflow-y': 'auto'
367389
});
368390
$cross.css({
@@ -375,11 +397,12 @@
375397
'1. Ctrl + 滑鼠左鍵 Click 連續選取/取消選取左方或上方選項<br/>',
376398
'2. 滑鼠左鍵 Click 選取/取消選取左方或上方選項並載入內容<br/>',
377399
'3. 點擊上方選項取消選取時, 會增加一個 "第二層區塊" 於左方選項上方, 方便將一度選取過又刪除的項目再重新選取而不必重新於左方選項中翻找<br/>',
378-
'4. 第二層區塊中點擊 "全部清除" 可移除整個區塊, 點擊選項文字部份可重新選取選項, 點擊選項叉叉鈕可將該選項自第二層區塊中移除<br/><br/>',
400+
'4. 第二層區塊中點擊 "全部清除" 可移除整個區塊, 點擊選項文字部份可重新選取選項, 點擊選項叉叉鈕可將該選項自第二層區塊中移除<br/>',
401+
'5. 網址在載入資料時會更新, 可用上一頁/下一頁切換並方便分享<br/><br/>',
379402
'注意:<br/>',
380-
'1. 需在做任何選取操作之前啟用, 若已有做過選取操作, 請先滑鼠左鍵 Click 點擊任一選項<br/>',
403+
'1. 需在做任何選取操作之前啟用, 若啟用前已有做過選取操作, 啟用後請先滑鼠左鍵 Click 點擊任一選項<br/>',
381404
'2. 連續選取後需有一載入動作後下方分頁才可正確動作<br/>',
382-
'3. 原始網頁內容均忠實呈現, 僅稍加修改操作流程、添加本操作說明及第二層選取區'
405+
'3. 原始網頁內容均忠實呈現, 僅稍加修改操作流程、添加本操作說明及第二層選取區與更新網址'
383406
].join(''));
384407
// 點關閉鈕時
385408
$cross.on('click', function () {
@@ -398,10 +421,22 @@
398421
this._initSelections();
399422
// 初始化右側上方選項
400423
this._initConditions();
424+
// 初始化分頁按鈕
425+
this._initPagin();
401426
// 顯示操作說明 (首次)
402427
this._showDirections();
403428
}
404429
};
405430
// 初始化
406431
window.uccustomize.findproduct.init();
432+
// 綁定 history popstate
433+
$(window).bind('popstate',
434+
function(e) {
435+
var state = e.originalEvent.state;
436+
// 判斷是否為 ucstate
437+
if (state && state.type && state.type=='ucstate') {
438+
// 載入內容, 並指明略過更新 history 狀態
439+
window.uccustomize.findproduct.ajaxLoad(state.url, {skipPushHistory: true});
440+
}
441+
});
407442
})();

0 commit comments

Comments
 (0)