2010-12-29 4 views
2

Javascript로 작성된 일부 스크립트가 사이트 요소로드 진행률을 보여줍니다. 이 스크립트는 index.html 파일에 저장되므로 기본 페이지에서만 실행됩니다. 그것은 완벽하게 잘 작동하지만, 이제 index.html에 도착했을 때 진행 상황을 보여 주며 메인 페이지가 이미 캐시되어 있고 시간 낭비이기 때문에 서브 페이지에서 메인 페이지로 돌아 왔을 때 내 문제입니다.사용자가 페이지로 이동할 때만 스크립트를 실행하는 방법

내 질문은 : 사용자가 서브 페이지에서 돌아 왔을 때가 아닌 페이지를 방문 할 때만 스크립트를 실행하는 방법은 무엇입니까?

+0

온로드는 .. – Pratik

+2

@Pratik 없음을 다하겠습니다은하지 않습니다. – JakeParis

+0

쿠키의 지속성이 캐시와 상관 관계가 없기 때문에 쿠키가 항상 작동하지 않습니다. 진행 지표는 어떻게 작동합니까? 고정 된 시간 동안 표시됩니까? – typeof

답변

0

쿠키뿐만 아니라 당신은 document.referrer 사용할 수 있습니다 : 몸/형태

<script> 
if(document.referrer && 
document.referrer.indexOf("yoursite.com") == -1) 
{ 
    // Page loading process script goes here. 
} 
</script> 
+0

그것은 내 문제를 해결할 것으로 보인다지만 첫 번째 document.refferer 조건없이 제대로 작동합니다. 내가 뭔가를 놓친 건가? –

+0

첫 번째 document.referrer는 문서 참조가 있는지 테스트하는 것입니다. "드물게"어떤 때는 차단되고 존재하지 않습니다. 그것 없이는 적재 과정이이 사람들에게 보여지며, 하위 페이지에서 "알려진"사람들에게만 보이지 않게됩니다. – Wayne

+0

브라우저에 참조 자의 값이 없도록 URL을 입력했다고 추측합니다. 이는 비어 있습니다. – Wayne

1

사용자가 index.html을 처음 방문 할 때 쿠키를 만듭니다. 쿠키가 있는지 확인하고 쿠키가 설정되지 않은 경우에만 스크립트를 실행하십시오.

if(!isset($_COOKIE['something'])) { 
    // run your loading script; 
    setcookie('something','someValue'); 
} 

브라우저에 출력을 보내기 전에 위 코드가 있는지 꼭 확인하십시오.

+0

당신의 코드는 PHP이고 자바 스크립트가 아니라는 것을 알아 두어야합니다 – typeof

4

cookies을 사용하면 자바 스크립트를 실행하지 않을시기를 제어 할 수 있습니다.

-1
<html> 
<head> 
.. 
</head> 
<body onload="doStuff()"> 
... 
<script type="text/javascript" language="JavaScript"> 
//<![CDATA[ 
function doStuff(){ 
    //check condition 
    if (readCookie('checkFirstTime')!=null) return; 

    //otherwise set the flag && do your thing 
    createCookie('checkFirstTime','yep',1); 
    alert("Welcome home Yo!"); 
    ... 
} 

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

//]]> 
</script> 
... 
</body> 
</html> 
+0

JMC 크리에이티브에게 말한 것에 대해 정교하게 설명합니다 : isset(), $ _COOKIE [] 및 setcookie()는 javascript 속성/함수가 아닙니다. – typeof

+0

쿠키를 관리하기위한 상세한 기능이 아니라 일반적인 설명이 필요하다고 생각했습니다. 어쨌든, 나는 그 해답을 편집했다. 희망이 도움이 –

관련 문제