테스트 사이트 - 개발 중인 베타 버전입니다

function 실행 후 새로고침 하는 법? 채택완료

밀리지 1년 전 조회 1,921

안녕하세요?

 

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

어떻게 하면 좋을까요?

 

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

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

 

 

</p>

<p>        <script type="text/javascript"></p>

<p>function googleTranslateElementInit() {new google.translate.TranslateElement({pageLanguage: 'ko',autoDisplay: true}, 'google_translate_element');}</p>

<p> </p>

<p>            /* 새 UI 선택 클릭 이벤트가 발생하면</p>

<p>            감춤 처리한 구글 번역 콤보리스트에</p>

<p>            선택한 언어를 적용해 변경 이벤트를 발생시키는 코드  */</p>

<p> </p>

<p>            document.querySelector('.translation-links').addEventListener('click',trans);</p>

<p>           </p>

<p>            function trans(event) {</p>

<p>                let el = event.target;</p>

<p>                if(el != null){</p>

<p>                    while(el.nodeName == 'FONT' || el.nodeName == 'SPAN'){el = el.parentElement;}</p>

<p>                    const tolang = el.dataset.lang; // 변경할 언어 코드 얻기</p>

<p>                    const gtcombo = document.querySelector('.goog-te-combo');</p>

<p>                    if (gtcombo == null) {</p>

<p>                        alert("Error: Could not find Google translate Combolist.");</p>

<p>                        return false;</p>

<p>                    }</p>

<p>                    gtcombo.value = tolang; // 변경할 언어 적용</p>

<p>                    gtcombo.dispatchEvent(new Event('change')); // 변경 이벤트 트리거</p>

<p>                }</p>

<p>                document.body.style.cssText = "";</p>

<p> </p>

<p>                return false;</p>

<p>            };</p>

<p>

 </p>

<p>        </script></p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 5개

채택된 답변
+20 포인트
1년 전

return false;

setTimeout(function() { window.location.reload(); }, 1000);

return false;

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

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

 

</p>

<p>document.querySelector('.translation-links').addEventListener('click', trans);</p>

<p>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 = "";</p>

<p>    // 새로고침 실행

    location.reload();</p>

<p>    // 기본 동작 막기

    event.preventDefault();

}

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

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

 

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

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

 

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

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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

새로고침 하는 부분이 없는데요?

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

M
1년 전

내용상으로 봤을때는 말씀하신것처럼 리로드가 되면 function이 실행 안되실듯 합니다.

리로드 하셔야 되는 부분을 ajax로 구현하시는게 나을듯 합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인