λ‘œμΌ“πŸΎ
article thumbnail

 

λ¬΄ν•œ 슀크둀 κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λŠ”λ° μžˆμ–΄ λ°˜λ“œμ‹œ λ³‘ν–‰λ˜μ–΄μ•Ό ν•  κΈ°λŠ₯이 μžˆμŠ΅λ‹ˆλ‹€. λ°”λ‘œ λ¬΄ν•œ 슀크둀둜 λ Œλ”λ§λœ μƒν’ˆμ„ λˆ„λ₯΄κ³  λ‹€μ‹œ [λ’€λ‘œκ°€κΈ°]λ₯Ό ν–ˆμ„ μ‹œ μ—¬μ „νžˆ κ·Έ μƒν’ˆμ˜ μœ„μΉ˜λ‘œ 와야 ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

 

 

[JavaScript] λ¬΄ν•œ 슀크둀 κΈ°λŠ₯ κ΅¬ν˜„ν•˜κΈ°

λ¬΄ν•œ μŠ€ν¬λ‘€μ€ 이컀머슀 κ΄€λ ¨λœ μ›Ήμ΄λ‚˜ 앱을 μ‚¬μš©ν•˜λ©΄ μ‰½κ²Œ μ ‘ν•  수 μžˆλŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€. 슀크둀의 μœ„μΉ˜κ°€ μ–΄λ– ν•œ 쑰건을 μΆ©μ‘±ν•˜κ²Œ 되면 μΆ”κ°€μ μœΌλ‘œ μƒν’ˆλ“€μ„ λΆˆλŸ¬μ˜΅λ‹ˆλ‹€. 그럼 μ–΄λ–»κ²Œ κ΅¬ν˜„ν•˜λŠ”μ§€

kingofbackend.tistory.com

 

λ§Œμ•½, 이 κΈ°λŠ₯이 κ΅¬ν˜„λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©΄ μƒν’ˆμ„ λˆ„λ₯΄κ³  λ§˜μ— 듀지 μ•Šμ•„ [λ’€λ‘œκ°€κΈ°]λ₯Ό λˆŒλ €μ„ λ•Œ λ‹€μ‹œ 이 μƒν’ˆμ΄ λ‚˜μ™”λ˜ κ³³κΉŒμ§€ μŠ€ν¬λ‘€μ„ λ‚΄λ €μ•Ό ν•©λ‹ˆλ‹€.

 

였늘의 집, μ•„μ΄λ””μ–΄μŠ€μ€ μ–΄λ–»κ²Œ λ˜μ–΄μžˆλŠ” 지 ν•œλ²ˆ λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

[였늘의 집]

였늘의 집 같은 경우 sessionStorageλ₯Ό μ΄μš©ν•œ κ±Έ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

였늘의 집

 

λ’€λ‘œ κ°€κΈ° μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆμ„ 경우 이λ₯Ό κ°μ§€ν•˜μ—¬ sessionStorageμ—μ„œ 값을 λΏŒλ €μ£ΌλŠ” 것 κ°™μ•˜μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ λ§Œμ•½ μ € 값듀을 μ§€μš°κ²Œ λœλ‹€λ©΄ μƒν’ˆμ„ 보고 [λ’€λ‘œκ°€κΈ°]λ₯Ό λˆŒλ €μ„ λ•Œ 전에 μœ„μΉ˜λ‘œ λŒμ•„μ˜€μ§€ λͺ»ν•©λ‹ˆλ‹€.

 

[μ•„μ΄λ””μ–΄μŠ€]

μ•„μ΄λ””μ–΄μŠ€ 같은 κ²½μš°λŠ” μš°μ„  ν˜„μž¬ λ¬΄ν•œ 슀크둀의 μœ„μΉ˜λ₯Ό localStorage에 μ €μž₯ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μƒν’ˆμ„ λˆŒλ €μ„ 경우 μƒˆλ‘œμš΄ νŽ˜μ΄μ§€κ°€ μƒκ²¨λ‚˜μ„œ 사싀 [λ’€λ‘œκ°€κΈ°]의 μ˜λ―Έκ°€ μ—†μ–΄μ§‘λ‹ˆλ‹€.

μ•„μ΄λ””μ–΄μŠ€

 

μ•„λ¬΄νŠΌ LocalStorage와 SessionStorageλ₯Ό μ΄μš©ν•˜λ©΄ 어렡지 μ•Šκ²Œ [λ¬΄ν•œ 슀크둀 μ‹œ μƒν’ˆ μœ„μΉ˜ μœ μ§€](μ œκ°€ 이름 뢙인거라 보편적인 이름은 μ•„λ‹™λ‹ˆλ‹€..) κΈ°λŠ₯을 κ΅¬ν˜„ν•  수 μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€.


였늘의 집과 μœ μ‚¬ν•˜κ²Œ κΈ°λŠ₯을 κ΅¬ν˜„ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. λ¬΄ν•œ 슀크둀 κΈ°λŠ₯은 κ΅¬ν˜„λ˜μ–΄μžˆλ‹€ κ°€μ •ν•˜κ² μŠ΅λ‹ˆλ‹€.

  1. λ¬΄ν•œ μŠ€ν¬λ‘€μ„ μ΄μš©ν•΄μ„œ μƒˆλ‘œ μƒν’ˆμ„ 뢈러 μ˜¬λ•Œλ§ˆλ‹€ ν•΄λ‹Ή μœ„μΉ˜μ™€ 뢈러온 μƒν’ˆλ“€μ„ SessionStorage에 λ‹΄μŠ΅λ‹ˆλ‹€.
  2. μƒν’ˆμ„ ν΄λ¦­ν•©λ‹ˆλ‹€. μ΄λ•Œ SessionStorageμ—λŠ” 이전 νŽ˜μ΄μ§€μ— λŒ€ν•œ 정보가 μžˆμŠ΅λ‹ˆλ‹€.
  3. λ’€λ‘œκ°€κΈ°λ₯Ό 눌러 이전 νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜λ©΄ 전에 λ³΄μ•˜λ˜ μƒν’ˆμ˜ μœ„μΉ˜λ‘œ μ΄λ™λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

 

* μ°Έκ³  : SessionStorage에 κ΄€ν•œ functionμž…λ‹ˆλ‹€.

 

[STEP1] λ¬΄ν•œ μŠ€ν¬λ‘€μ„ μ΄μš©ν•΄μ„œ μƒˆλ‘œ μƒν’ˆμ„ 뢈러 μ˜¬λ•Œλ§ˆλ‹€ ν•΄λ‹Ή μœ„μΉ˜μ™€ 뢈러온 μƒν’ˆλ“€μ„ SessionStorage에 λ‹΄λŠ”λ‹€

// s : sessionStorage κ°’ μ„€μ •
session_obj.totalReturnData = totalReturnData;
session_obj.path_name = path_name;
session_obj.sort = formData.sort; 
setJSONSessionStorage('session_obj', session_obj);//μ„Έμ…˜ μŠ€ν† λ¦¬μ§€μ— μ €μž₯
// e : sessionStorage κ°’ μ„€μ •

* μ°Έκ³  : totalReturnDataμ—λŠ” html이 담겨져 μžˆμŠ΅λ‹ˆλ‹€.

 

μŠ€ν¬λ‘€μ„ λ‚΄λ¦΄μ‹œ νŠΉμ • μœ„μΉ˜μ— 슀크둀이 κ°€κ²Œλ˜λ©΄ ajaxλ₯Ό 톡해 μƒν’ˆλ“€μ„ μΆ”κ°€μ μœΌλ‘œ λΆˆλŸ¬μ˜΅λ‹ˆλ‹€. 이후 ajax success 뢀뢄에 μœ„ μ½”λ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ SessionStorage에 λ‹΄μ•„μ€λ‹ˆλ‹€. 

 

[STEP2] μƒν’ˆμ„ ν΄λ¦­ν•œλ‹€

μƒν’ˆ λ””ν…ŒμΌ 이전 νŽ˜μ΄μ§€

 

μƒν’ˆ 클릭 ν›„ μƒν’ˆ λ””ν…ŒμΌ νŽ˜μ΄μ§€λ‘œ 이동 ν›„ SessionStorage보면 값듀이 잘 담겨져 μžˆμŠ΅λ‹ˆλ‹€.

 

[STEP3] λ’€λ‘œκ°€κΈ°λ₯Ό 눌러 이전 νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜λ©΄ 전에 λ³΄μ•˜λ˜ μƒν’ˆμ˜ μœ„μΉ˜λ‘œ μ΄λ™λ˜μ–΄ μžˆλ‹€

μƒν’ˆ λ””ν…ŒμΌ

 

μƒν’ˆ λ””ν…ŒμΌ ν™”λ©΄μ—μ„œ λ’€λ‘œκ°€κΈ°λ₯Ό 눌러 이전 νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.

μƒν’ˆ λ””ν…ŒμΌ 이전 νŽ˜μ΄μ§€

 

μƒν’ˆ μœ„μΉ˜λ‘œ 잘 μ˜¨κ²ƒμ„ 확인 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


[μ΅œμ’…μ½”λ“œ]

[λ’€λ‘œκ°€κΈ°]λ₯Ό ν–ˆμ„ μ‹œ λŒμ•„μ˜€λŠ” νŽ˜μ΄μ§€μ—μ„œ "[λ’€λ‘œκ°€κΈ°]λ₯Ό ν•΄μ„œ 이 νŽ˜μ΄μ§€λ‘œ μ™”λ‹€" λΌλŠ” 이벀트λ₯Ό 감지해야 ν•©λ‹ˆλ‹€. 

window.onpageshow = function(event) {
	if ( event.persisted || (window.performance && window.performance.navigation.type == 2)) {
	// Back Forward Cache둜 λΈŒλΌμš°μ €κ°€ λ‘œλ”©λ  경우 ν˜Ήμ€ λΈŒλΌμš°μ € λ’€λ‘œκ°€κΈ° ν–ˆμ„ 경우
		console.log("λ’€λ‘œκ°€κΈ°λ‘œ μ™”μŒ");
	}else{
    	console.log("λ’€λ‘œκ°€κΈ°λ‘œ 온게 μ•„λ‹˜");
    }
}

μœ„ μ½”λ“œλ₯Ό μ΄μš©ν•˜μ—¬ [λ’€λ‘œκ°€κΈ°]의 이벀트λ₯Ό 감지 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 사싀 μ—¬κΈ°κΉŒμ§€λ§Œ 되면 더 이상 μ–΄λ €μšΈ 건 μ—†μŠ΅λ‹ˆλ‹€.

 

[λ¬΄ν•œ 슀크둀 μ‹œ μƒν’ˆ μœ„μΉ˜ μœ μ§€] κΈ°λŠ₯에 λŒ€ν•œ μ΅œμ’… μ½”λ“œμž…λ‹ˆλ‹€.

function onPageShow(_callback){
	// λ’€λ‘œκ°€κΈ° 이벀트 감지
	window.onpageshow = function(event) {
		if ( event.persisted || (window.performance && window.performance.navigation.type == 2)) {
		// Back Forward Cache둜 λΈŒλΌμš°μ €κ°€ λ‘œλ”©λ  경우 ν˜Ήμ€ λΈŒλΌμš°μ € λ’€λ‘œκ°€κΈ° ν–ˆμ„ 경우
			_callback();
		}/*else{
		}*/
	}
}

function initReturnData(){
	if(getJSONSessionStorage("session_obj") != null 
       && getJSONSessionStorage("session_obj").path_name == path_name){
		...				
		totalReturnData += getJSONSessionStorage("session_obj").totalReturnData;
		page_now = getJSONSessionStorage("session_obj").page_now;
		...
	}
}

$(function() {
	
	onPageShow(function(){
		initReturnData();
	});

}

 

onPageShow 둜 [λ’€λ‘œκ°€κΈ°] 이벀트λ₯Ό κ°μ§€ν•œ ν›„ μ½œλ°±ν•¨μˆ˜(initReturnData)λ₯Ό ν˜ΈμΆœν•˜μ—¬ SessionStorage에 μžˆλŠ” 값듀을 λ Œλ”λ§ μ‹œμΌœμ€λ‹ˆλ‹€.

 

이상 였늘의 μ§‘μ—μ„œ μ˜κ°μ„ μ–»μ–΄ [λ¬΄ν•œ 슀크둀 μ‹œ μƒν’ˆ μœ„μΉ˜ μœ μ§€] κΈ°λŠ₯을 κ΅¬ν˜„ν•΄λ΄€μŠ΅λ‹ˆλ‹€.

 

profile on loading

Loading...