2016-09-02 6 views
0

사용자 세션 당 한 번 팝업을 표시하려고합니다. (우리 식당은 개인 이벤트로 폐쇄됩니다) ... 사용자가 사이트에서 다른 페이지를 클릭하면 다시 한번이를 좋아하지 않았다 ... 팝업 ... 그래서 난 이런 짓을 :휴대 기기에서 내 쿠키를 읽을 수 없습니다.

<script type="text/javascript"> 
    if (document.cookie.indexOf("naniCOOKIE=") == -1) { 
    var now = new Date(); 
    document.cookie = "naniCOOKIE=yes"; 

    function Landing() { 
     $lb.launch({ 
     url: "special_notice.php", 
     options: "width:570px height:110px", 
     title: " ", 
     description: "" 
     }); 
    } 
    } 
</script> 

을하며에서 잘 작동하는 모든 PC의 맥의 등 ... 그냥하지 모바일 기기에서! 항상 팝업 될 것입니다 ... 그리고 나는 그것을 원하지 않습니다 ... 내가 뭘 잘못하고있는 걸까요?

+0

여기 코드가 맞습니까? 착륙 기능은 절대로 호출되지 않습니다. – AgentME

+0

좀 더 자세해야 ... \t 모든 페이지는 다음과 같습니다. 다음을 포함하는 header.php가 있습니다 : <= $ closed_notice;> 내부 변수이다 $의 closed_notice = ' '; – droogiee

답변

0

쿠키가없는 경우에만 착륙 기능을 정의하는 것은 큰 해결책이 아닙니다. 의도 한대로 작동하는 경우 페이지가 정의되지 않은 경우 착륙 기능을 호출하려고 할 때 오류가 발생하기 때문입니다.

또한 Javascript (ES5)에서 지원되지 않으며 비표준 동작으로 인해 일부 브라우저에서만 작동하기 때문에 나쁜 전략입니다. 함수 선언은 if 블록과 같은 비 함수 블록에 있지 않아야합니다. 시도한 모바일 장치와 같은 일부 브라우저는 if 블록에서 함수 선언을 들어 올릴 것입니다.

두 가지 문제를 모두 해결할 수있는 좋은 방법이므로 비표준 동작에 의존하지 않고 Landing을 정의하지 않은 상태로 두지 않습니다. 때로는 함수를 정의 할 때만이 아니라 조건부 검사를 함수로 옮기면됩니다.

function Landing() { 
    if (document.cookie.indexOf("naniCOOKIE=") == -1) { 
    var now = new Date(); 
    document.cookie = "naniCOOKIE=yes"; 

    $lb.launch({ 
     url: "special_notice.php", 
     options: "width:570px height:110px", 
     title: " ", 
     description: "" 
    }); 
    } 
} 
+0

내 코드를 응답하고 조정할 수있게 해준 덕분에 .. 당신이 제안한 바대로 바뀌 었습니다. 데스크톱 OS와 마찬가지로 작동하지만 팝업은 아직 테스트 한 ipad가있는 모든 페이지로드에서 계속 발생합니다. – droogiee

+0

NEVER 마음! nix that !!! 그것은 완벽하게 작동합니다! 매우 이상한, 나는 IPADS 캐시와 역사를 지웠다. 사파리를 닫고 테스트를했다. 그리고 그것은 여전히 ​​모든 페이지에서 나타나고 있었다. 그 다음 나는 사파리와 타다에 활력을 주었다! 그것은 작동했다. 나는 페이지에 가겠다. 그리고 어떤 팝업이 아니라도! 도와 줘서 고마워! 나 자신을 이해하려고 시간을 보냈다! 고마워요! – droogiee

관련 문제