2011-10-03 3 views
3

나는 javascript를 사용하여 Safari (5.1)에서 페이지를 새로 고치는 방법을 알아 내려고 노력하고 있습니다. = window.location.href Safari에서 javascript 페이지 새로 고침

  • window.location.reload

    지금까지 내가 시도

    ,

    • window.location.href = window.location.href
    • 에서는 window.location (참)
    • window.location.replace (window.location.href)

    Safari에서 처리 페이지 새로 고침의 올바른 방법은 무엇입니까? http://www.quackit.com/javascript/javascript_refresh_page.cfm

  • +0

    을 그들 모두는 나를 위해 일하고있다. I 'm 5.0 Windows – Mohsen

    +0

    Safari에서 개발자 도구를 여는 방법을 알고 계십니까? – Mohsen

    +0

    try document.location.reload (true) – lionheart

    답변

    3
    location.reload(true); // works for safari 
    

    , 당신은 상쾌 페이지에 대한 예를 많이해야합니다 목적은 ...

    window.location.reload(); 
    

    하드 다시로드 (페이지에 대한 새로운 GET 요청을 전송)로하려면 true로 첫 번째 인수를 설정합니다.

    +0

    페이지가 POST의 응답 인 시나리오에서이 작업이 저에게 효과적이지 않았습니다. – andrewb

    +1

    POST의 경우 무엇을 기대합니까? POST 페이지를 새로 고치면 더 힘들어집니다. –

    +0

    네, 더 까다 롭지 만 사파리의 예외처럼 보입니다. 나머지 브라우저는 JS 기반의 'POST'요청 새로 고침을 지원합니다. – andrewb

    1

    당신은 항상 location에서 reload() 방법을 사용한다 : 당신은 이미이 사이트를 모르는 경우에 살펴보기로하자

    +0

    페이지가 POST의 응답 인 시나리오에서 이것은 작동하지 않습니다. – andrewb

    +0

    POST에서 응답을 렌더링해서는 안되며 [Post/Redirect/Get] (http://en.wikipedia.org/wiki/Post/Redirect/Get)을 사용해야합니다. 그렇지 않으면 사용자가이 페이지를 다시로드하거나 탐색하려고 할 때 동일한 문제가 발생합니다. – alex

    +0

    확실히이 시나리오에서는 쿼리 문자열을 사용해야합니다. 하지만 지금은 다시 디자인 할 수 없으며 Safari를 제외하고 새로 고침, 뒤로 이동, window.location.reload()도 작동합니다. 그래서 나는 그것이 존재하지 않는다고 의심하고 있지만, 완전히 cross-browser 인 window.location.reload()에 대한 대안을 기대하고있다. – andrewb

    1

    분명히, 맥이나 iOS의 Safari는 location.reload 버그를 가지고 있으므로, 나는 URL 쿼리 문자열의 활용이 간단한 크로스 브라우저 솔루션을 개발했습니다 :

    function refresh() { 
     
        var url = location.origin; 
     
        var pathname = location.pathname; 
     
        var hash = location.hash; 
     
    
     
        location = url + pathname + '?application_refresh=' + (Math.random() * 100000) + hash; 
     
    }