function 실행 후 새로고침 하는 법?

function 실행 후 새로고침 하는 법?

QA

function 실행 후 새로고침 하는 법?

본문

안녕하세요?

 

아래 스크립트 실행 후 새로고침을 실행하려고 합니다. 

어떻게 하면 좋을까요?

 

마지막 return false;  바로 아래에  location.reload();  코드를 넣으면 작동이 안 되고, 

바로 위에 넣었더니, 작동은 되는데 function 이벤트가 적용이 안 되네요. ㅜ

 

 


        <script type="text/javascript">
function googleTranslateElementInit() {new google.translate.TranslateElement({pageLanguage: 'ko',autoDisplay: true}, 'google_translate_element');}
 
            /* 새 UI 선택 클릭 이벤트가 발생하면
            감춤 처리한 구글 번역 콤보리스트에
            선택한 언어를 적용해 변경 이벤트를 발생시키는 코드  */
 
            document.querySelector('.translation-links').addEventListener('click',trans);
           
            function trans(event) {
                let el = event.target;
                if(el != null){
                    while(el.nodeName == 'FONT' || el.nodeName == 'SPAN'){el = el.parentElement;}
                    const tolang = el.dataset.lang; // 변경할 언어 코드 얻기
                    const gtcombo = document.querySelector('.goog-te-combo');
                    if (gtcombo == null) {
                        alert("Error: Could not find Google translate Combolist.");
                        return false;
                    }
                    gtcombo.value = tolang; // 변경할 언어 적용
                    gtcombo.dispatchEvent(new Event('change')); // 변경 이벤트 트리거
                }
                document.body.style.cssText = "";
 
                return false;
            };

 
        </script>

이 질문에 댓글 쓰기 :

답변 5

리로드 한다해도 펑션상태를 알수 없기 때문에 의미가 없습니다.

 

어차피 리로드 펑션 리로드 펑션.. 해봤자 현재 상태 저장이 불가.

따라서 페이지 새로고침이 아닌 ajax 를 통하여 데이터를 가져오는게 좋아보일듯합니다.

 

부득이하게 리로드 해야겠다면 언어코드를 get 이나 post 파라미터로 보내서

리로드 후에도 펑션값이 유지되게 하세요.

다음과 같은 방법도 있으니 참고해 보세요

 


document.querySelector('.translation-links').addEventListener('click', trans);
function trans(event) {
    let el = event.target;
    if (el != null) {
        while (el.nodeName == 'FONT' || el.nodeName == 'SPAN') {
            el = el.parentElement;
        }
        const tolang = el.dataset.lang; // 변경할 언어 코드 얻기
        const gtcombo = document.querySelector('.goog-te-combo');
        if (gtcombo == null) {
            alert("Error: Could not find Google translate Combolist.");
            return false;
        }
        gtcombo.value = tolang; // 변경할 언어 적용
        gtcombo.dispatchEvent(new Event('change')); // 변경 이벤트 트리거
    }
    document.body.style.cssText = "";
    // 새로고침 실행
    location.reload();
    // 기본 동작 막기
    event.preventDefault();
}
답변을 작성하시기 전에 로그인 해주세요.
전체 125,873 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT