2016-09-10 2 views
-1

특정 시나리오가 있습니다. 로드시 각 페이지에서 즉시 실행되는 함수가 있습니다.자바 스크립트에서 코드를 한 번만 실행하십시오.

(function() { 
     if (readcookie(login)) { //i need to make it execute only once 
      document.head.appendChild(iframe); 
     } else { 
     //nothing 
     } 
    }()); 

if 문을 한 번만 실행할 수 있습니까? 로그인 쿠키를 수정할 수 없습니다. 또한 나는 글로벌 변수 또는 새로운 쿠키를 사용하고 싶지 않다.

코드가 이전 페이지로드에서 실행 된 경우는 기억 sessionStorage을 사용할 수 있습니다
+0

문구를 조금 더 잘 사용할 수 있습니까? 현재 당신이하려는 것을 파악하는 것이 매우 어렵습니다. 문제는 –

+0

이 질문을 다시 말한 것입니다. – ajayv

+0

당신이 묻는 것은 아직 명확하지 않습니다. 새 페이지를로드하여 전체 프로그램을 재실행 할 때까지 적어도 한 번만 실행됩니다. – Quentin

답변

1

:

(function() { 
    // Check that your custom storage variable is not set. 
    if (!sessionStorage.frameAppended) { 
     // If this is the first time the code is executed, 
     // create a boolean variable in the storage. 
     sessionStorage.frameAppended = true; 

     // Add the code that needs to be executed only once below this point. 
     if (readcookie(login)) { 
      document.head.appendChild(iframe); 
     } 
    } 
}()); 

당신이 (브라우저 세션 당 반대) 사용자 정의 데이터 영원히 저장하려는 경우, 당신은 사용할 수 있습니다 localStorage 대신

+1

브라우저 데이터를 지우면 코드 'localStorage'가 지워지고 코드가 다시 실행된다는 점에 유의하십시오. – Xotic750

+0

@ Xotic750은 사실이지만, 다른 접근법이 아니라 그 주위에 방법이 없습니다. –

+0

네, 맞습니다. 세션 쿠키가 작동합니다. 브라우저 세션이 만료되면 삭제하고 싶습니다. 나는 이렇게했다 : - if (readcookie (login) &&! readCookie (frameAppended)) { document.head.appendChild (iframe); 세션 쿠키 만들기 '프레임 추가'; }' – ajayv

관련 문제