본문 바로가기
javascript

특정 게시판 목록 접근시 등록 화면으로 이동하기 (sessionStorage)

by kkumtree 2024. 5. 17.

신고성 게시판에 접근시 바로 등록화면으로 이동해달라는 고객의 요청이 있다.

 

그냥 해당 게시판 ID가 맞다면 바로 등록화면을 띄울 수 있는 API가 있다면 참 좋을텐데...

 

현재 사용중인 회사 솔루션은 스킨에 iframe을 이용해 원하는 컨텐츠를 불러오는 형식이라

 

그냥 등록화면으로 이동하는 로직만 태우면 스킨없이 달랑 나오게 된다.

 

스킨을 포함해서 가져갈 수 있는 방법이 있을수도 있는데 누구한테 물어볼 사람도 없는 상태이니...

 

작업할 내용은

1. 목록화면에 접근했을때 게시판아이디를 비교

2. 신고성 게시판인 경우 바로 등록화면으로 이동

이다.

 

브라우저의 세션스토리지를 이용할 것인데,

LocalStorage랑 SessionStorage가 있다.

 

LocalStorage는 브라우저내에 탭이 새로 생기든 브라우저가 꺼졌다가 다시 켜지든 상관없이 정보를 가지고 있는 녀석이고,

SessionStorage는 브라우저내의 단 한개의 탭 내에서만 값을 가지고 있는 녀석이다.

 

고객이 원하는 정도가 어느정도인지는 물어보고 진행하고 싶은데, PM이 존재하는 상황에서 굳이 내가 물어볼 필요는 없을것 같고, 설명하면서 진행하기엔 이미 지칠대로 지친 상태이니 그냥 현재 탭내에서만 사용할 수 있도록 작성해보겠다.

 

 

list.jsp

<script>
    document.addEventListener('DOMContentLoaded', function() {
        // 세션 스토리지에서 플래그 확인
        var currentBoardId = '<c:out value="${boardVO.boardId}"/>';
        var redirectedFromBoard = sessionStorage.getItem('redirectedFromBoard');

        //신고성 게시판인가?
        if (currentBoardId === 'csr') {
            // 세션스토리지가 없거나 값이 값이 true면 들어간다.
            if (redirectedFromBoard == null || redirectedFromBoard === 'true'){
                console.log(redirectedFromBoard )
                  // 세션 스토리지에 플래그 설정
                sessionStorage.setItem('redirectedFromBoard', 'true');

                // 등록 버튼 클릭하여 등록 화면으로 이동
                document.getElementById("editBoard").click();
            }
        }else{ //일반 게시판인경우
            // 세션스토리지가 존재하면 없애준다.
            if (redirectedFromBoard != null){
                sessionStorage.removeItem('redirectedFromBoard');
            }
        }
    });
</script>

 

 

edit.jsp

<script>
    <c:if test="${boardVO.boardId eq 'csr'}">
        // 신고성 게시판
        function sessionStorageChange(){
            // 세션 스토리지에서 플래그 확인
            var redirectedFromBoard = sessionStorage.getItem('redirectedFromBoard');

            if (redirectedFromBoard != null && redirectedFromBoard === 'true'){
                console.log(redirectedFromBoard )
                //목록버튼 클릭시 세션스토리지를 false로 변경한다.
                sessionStorage.setItem('redirectedFromBoard', 'false');
            }
        }
    </c:if>
</script>