2012-03-16 5 views
4

페이지에서 이동할 때 나는 떨림을 보여주는 페이지가 있습니다. 모든 링크에 대해 <a onclick="throbber.show()">처럼 말하십시오. Firefox에서 다시 탐색 할 때 떨림이 계속 표시됩니다.웹 사이트 : 내비게이션으로 인해 어딘가에 도착했을 때를 감지합니다.

다시 클릭하면 도착한 웹 페이지로 연결된 자바 스크립트 이벤트가 있습니까? 또는 웹 페이지가 새 웹 페이지로 변경 될 때 해고되는 것입니까? 아니면 내 throbber 더 지능을 만들 수 있습니까?

입력 해 주셔서 감사합니다.

+0

캐시 때문이라고 생각합니다. 브라우저는 캐시 된 페이지 (모든 js 객체 및 상태 포함)를 표시합니다. 이는 서버에서 해당 https 헤더를 설정하여 해결할 수 있습니다. – kirilloid

답변

1

Dldnh의 대답은 나에게 몇 가지 시험을 원했습니다. 나는 앞뒤로 움직일 때 body.onload() 이벤트가 호출 될 것이라고 생각했다. 그래서 간단한 테스트 페이지를 만들었고 파이어 폭스 10, IE7, IE 8, IE 9, 크롬 17에서 이것이 사실이라는 것을 알았습니다. jQuery (document) .ready()가 호출됩니다.

는 hidind에 대한 매우 간단한 해결책은 색인기 그러므로

<body onload="hideThrobber()"> 

사용하거나 다음 색인기을 숨기기 위해 준비

jQuery(document).ready(function() { 
    hideThrobber(); 
}; 

을 jQuery를 사용하여이 될 것입니다. 이것을 구현하고 그것은 내 페이지에서 잘 작동하는 것 같습니다. 비슷한 문제가있는 누군가가 이것을 확인할 수 있다면 좋을 것입니다.

또한이 부분은 interesting Stackoverflow question입니다.조금 구식이지만, 자바 스크립트를 앞뒤로 움직이면서 앞뒤로 움직이는 것은 사실입니다. 그러나 나는 오늘날의 JS 엔진이 빠르다고 생각할 것입니다. 그래서 이것은 더 이상 진짜 문제가 아닙니다.

1

넣어이 당신의 HTML에서 :

<form name="_browser"><input id="checker" value="1" type="hidden"></form> 

또한이 자바 스크립트 : 다음

function cacheCheck() 
{ 
    var checker = document.getElementById("checker"); 
    if (checker.value == 2) return true; 
    checker.value = 2; 
    checker.defaultValue = 2; 
    return false; 
} 

function cacheReload() 
{ 
    if (cacheCheck()) location.reload(true); 
} 

cacheReload를 호출 할 때 페이지로드 :

<body onload="cacheReload()"> 
+0

좋은 아이디어! 그래서, 기본적으로 말하고있는 것은 몸체의 onload 이벤트가 내가 탐색하는 페이지에서 시작된다는 것입니다. 그래서 나는 그저 throbber를 숨기는 것이 더 쉽다고 생각합니다. –

+0

이것은 당신을 확인하기위한 범용 솔루션입니다. 부실 콘텐츠를 다루지 않는 것은 뒤로 버튼을 사용하는 것입니다. – dldnh

0

이 경우 당신은 할 수 없습니다 이동하는 페이지에서 진동기를 끄면 수행 할 수있는 몇 가지 작업이 있습니다. 트릭은 페이지가 활성 상태로 유지되므로 onclick에서 나가기 전에 몇 가지 작업을 시작할 수 있다는 것입니다. 그들은 완벽하지 않습니다.

  1. 타이머를 시작하십시오. 페이지로 돌아 가면 타이머가 실행되므로 시간 초과 루틴이 호출되고 거기에서 진동을 해제 할 수 있습니다.
    문제점 : 타이머 간격을 너무 짧게 설정하면 사용자가 실제로 페이지를 떠나기 전에 시간 초과 루틴이 호출되어 throbber가 중지됩니다. 또는 간격을 너무 크게 설정하면 타임 아웃 루틴이 돌아 오기 전에 시간이 걸립니다.

  2. 이벤트 리스너를 mousemove 이벤트에 응답하는 본문에 추가하면 사용자가 마우스를 움직이 자마자 throbber를 끄는 루틴이 호출됩니다.
    문제 : 사용자가 브라우저의 뒤로 버튼을 클릭하면 페이지가 다시 표시 될 때 마우스가 창 밖에있게되므로 사용자가 마우스를 창으로 이동할 때까지 스로버가 계속 표시됩니다.

그래서 선택하십시오. 또는 둘 다하십시오. 나중에 정리하는 것을 잊지 마십시오. 타이머를 중지하고 이벤트 리스너를 제거하십시오.

+0

멋진 아이디어이지만 실제 해결 방법/해킹과 같습니다. 실제로 이들 중 어느 것을 시도해 보셨습니까? –

+0

예, 그들은 효과가 있었지만 언급 한 문제가있었습니다. –

관련 문제