window.location = self.location이 작동하지 않을 때 ajax를 통해 페이지 새로 고침

StackOverflow https://stackoverflow.com/questions/181132

문제

내 홈페이지에서 나는 얻었다.

<ul id="login">
  <li> <a id="loginswitch" href="./login-page">log-in</a> | </li>
  <li> <a id="signupswitch" href="./signup-page">sign-up</a> </li>
</ul>

Mootools를 통해, 나는이 앵커 요소를 ID에 의해 얻을 수있게되면, 일단 클릭하면 화려한 div가 로그인 또는 가입 양식을 포함하는 화려한 div가 팝업되어 (물론 이벤트 전파를 중지하는 방법) Ajax 호출이 시작됩니다. 이는 세션을 생성하고 페이지를 다시로드하여 사용자가 현재 로그인하고 사용자 수준 제어가 나타나는 시각을 갖도록합니다.

Ajax 호출은 Mootools Ajax 클래스에 의해 시작되고 evalScripts 옵션이 True로 설정됩니다. Ajax 페이지는 스크립트 코드를 반환합니다.

<script type="text/javascript">window.location = self.location;</script>

이 시스템은 완벽하게 작동합니다. 이제 앵커를 변경하면 왜 궁금합니다. href 가치 href="#" 내 스크립트가 더 이상 작동하지 않습니까?

창문과 관련이 있습니까?

이벤트의 전파가 중단 된 경우에도 링크를 클릭했을 때 속성을 변경 했습니까?

도움이 되었습니까?

해결책

window.location = self.location;

이 JavaScript가 실행 중입니다.

실행되면 브라우저는 Window.Location의 값을 새 값으로 바꾸라고 지시받습니다. 모든 브라우저는 아닙니다 여기에서도 같은 방식으로 반응 할 것입니다. 일부는 예상대로 작동하지만 다른 일부는 그것에 대해 똑똑해지고 두 값을 비교할 것입니다. 브라우저는 알고 있습니다 어떤 페이지가 켜져 있고, 같은 페이지로 이동하도록 요청하는 것을 알고 있습니다.

브라우저 캐시

브라우저에는 현재 페이지의 사본이 있습니다. 은닉처. 서버와 대화하고 캐시에있는 페이지가 여전히 유효한지 묻습니다. 캐시가 유효 한 경우 페이지의 재 장전을 강제로하지 않기로 결정할 수 있습니다. 무대 뒤에서 이것은 HTTP 헤더에서 발생합니다. 브라우저와 서버는 여러 가지 방법으로 HTTP를 통신 할 수 있습니다. 이 경우 브라우저는 다음과 같은 내용을 서버에 빠른 요청을 보냅니다.

GET /stackoverflow.com/posts/196643/index.html
HTTP/1.1
Host: www.stackoverflow.com
User-Agent: Mozilla/5.0
If-Modified-Since: Sun, 12 Oct 2008 20:41:31 GMT

이것을 a라고합니다 조건부 요청. 말함으로써 수정 된 경우, 당신의 브라우저는 "그 파일을 줘, 그러나 마지막으로 본 이후로 수정 된 경우에만 해당 파일을 줘"라고 말합니다.

간단히 말해서, 당신은 브라우저에 페이지를 다시로드하라고 명시 적으로 말하지 않았습니다.

할 수있는 방법은 다음과 같습니다.

location.reload( true );

"참"은 an입니다 선택적 매개 변수, 을 위한 재 장전 강제. 브라우저는 캐시를 보지 않을 것입니다. 당신이 말한대로 할 것입니다.

다른 팁

페이지에 앵커로 이동하는 것입니다. # 의미 - 다시로드가 필요하지 않습니다.

그들이 직장 에서이 특별한 과제를 나에게 건네 주면 나는 그것을 디자인으로 쫓아 냈습니다. 보안 페이지 또는 OpenID 로그인에 대해 이야기하지 않는 한 로그인 또는 로그인 양식을 팝업해서는 안됩니다. 사용자는 해당 HTTPS를 찾는 법을 배워야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top