자바 스크립트는 해시 값으로 페이지를 다시로드합니다.


80

일부 프로세스 후 외부 자바 스크립트 파일 에서이 문으로 페이지를 새로 고치려고합니다.

window.location.href = window.location.href

페이지를 완벽하게 새로 고침하지만 새로 고침 후 특정 위치로 스크롤하고 싶습니다. 그래서 저는 이것을 페이지에 올렸습니다.

<a name="uploadImgSection"></a>

그리고 자바 스크립트를

window.location.href = window.location.href + "#mypara";

이 코드는 페이지를 새로 고침하거나 새로 고침하지 않습니다.

window.location.hash = "#uploadImgSection";
window.location.href = window.location.href;

그렇게하면 페이지가 전혀 다시로드되지 않습니다. 스크롤 막대 위치로 페이지를 다시로드 할 수있는 방법이 있습니까?


PHP 파일을 사용하여 새 페이지로 리디렉션 하시겠습니까?
Derek 朕 會 功夫

HTML 페이지가 아닙니다. 목적은 일부 자바 스크립트 함수를 실행 한 후 페이지를 새로 고치고 해당 단락의 위치로 다시 스크롤하는 것입니다.
Jonas T

1
어떻게 전화 해 window.location.href? 당신은 페이지로드에있는 것을하고있는 당신은 F5를 타격하고 당신이 (당신이 새로 고침에 F5 전에 있었다 스크롤 것을 또는 다른 브라우저)이 파이어 폭스를 사용하는 경우 수도 문제가 될
ajax333221

답변:


157
window.location.href += "#mypara";
location.reload();

먼저 해시를 추가 한 다음 페이지를 다시로드하십시오. 해시는 그대로 유지되고 페이지가 다시로드됩니다.

테스트, 작동합니다.


PS : 해시 이미 URL에 존재하는 경우, 직접을 통해 변경 할 수 있습니다 location.hash대신 .href.


1
한 가지 더. 페이지를 새로 고쳤지만 다시로드 한 후 게시 데이터를 포함합니다. 어떻게 청소할 수 있습니까? 이러한 게시물 데이터로 인해 데이터 행을 삭제할 수 없습니다.
Jonas T

이것을 읽으십시오. stackoverflow.com/questions/2405117/… 다른 포스트 백 이벤트를 수행하지 못하게하는 POST 데이터가 포함되어 있습니다.
Jonas T

글쎄요, 저는 POST에 대해 잘 모릅니다. 원한다면 그것에 대해 새로운 질문을 할 수 있습니다.
데릭朕會功夫

1
음, 마침내 쿼리 문자열을 사용해야했습니다. "window.location.href = url +"& action = reload ";". 페이지로드 이벤트에서 javascripot에서 조치 쿼리 문자열을 확인하고 "window.location.hash ="#uploadImgSection ";"을 수행하십시오. 작동해야하는 방식은 아니지만 지금은이 방식으로 작동해야했습니다.
Jonas T

@Derek朕會功夫당신은 천재 :)입니다
아틸라 Naghi

35

을 사용 window.location.href += "#mypara"하면 매개 변수가 존재하더라도 URL에 매개 변수가 계속 추가 된다는 것을 알았 기 때문에이 질문을 업데이트하고 싶었습니다 . 더 나은 방법은 사용하는 것입니다.

window.location.hash = "#mypara"
location.reload();

25

이것은 정말 오래된 게시물이며 올바른 답변 조합으로 여전히 시도하고 답변합니다.

  1. location.reload()그리고 location.reload(true)브라우저에서 F5처럼 작동합니다. 이전에로드 한 경우 모든 양식 데이터를 서버에 다시 게시합니다.
  2. location.href브라우저가 URL 변경을 인식 할 때까지 페이지를 새로 고치지 않습니다. 해시 변경 (#paramname)은 URL 변경에 적합하지 않으므로 수행하는 것만 location.href+="#paramname"작동하지 않습니다.

따라서 URL이 변경 location.href+="?anything#paramname"되면 페이지를 새 요청으로 다시로드해야합니다 ?anything.


좋은 대답입니다. 다음은 요리 된 버전입니다. window.location = '<? php echo $ _POST ['back ']?> & rand ='+ ((new Date ()). getTime () % 1000000000) + '# myhash';
Johan

4
다른 하나 : location.href + = '& rand ='+ Math.rand () + '# myhash';
Johan

IMO는 다른 게시물에 비해 질문에 가장 잘 대답합니다. 예를 들어 라이브러리의 일부로 작성되었을 수있는 기본 코드를 변경할 필요가 없습니다.
thekingoftruth

1
Johan, Math.rand ()는 Math.random ()으로 변경되어야합니다
tomJO

가장 가까운 답변 (다른 답변은 2012 년에 맞았지만 2018 년에는 모두 틀렸을 수 있음)이지만 사용자의 주소 표시 줄 기록에 항목을 추가하는 문제가 있습니다. 새로 고침하려는 경우에는 좋지 않습니다. 같은 역사 상태 ...
글렌 메이 나드


-1

이 시도

           var urlString=window.location.href;
           var url=urlString.split("#")[0];
           window.location.href = url + "#mypara";

4
이것은 페이지를 전혀 새로 고침하지 않습니다.
Jonas T

"해보기"코드 전용 답변은 그다지 유용하지 않습니다. 뭐하는거야? 왜 작동합니까?
random_user_name

-1

이것은 나를 위해 일했습니다.

var tabValue = document.URL;
window.location = tabValue.substring(0, tabValue.lastIndexOf("#"));
window.location.hash = "#tabs-3"; //Whatever is your hash value
location.reload();

-1

이것은 나를위한 일

window.location.href = baseUrl + "#/m/team";
 location.reload();

-1

이것은 나를 위해 일했습니다.

$('body').on('click', '.className', function () {
    var data = $(this).attr('href');
    alert(data);
    window.location.reload();
});

이것은 기본적으로 다른 답변을 수행하는 더 긴 방법 인 것 같습니다. 또한 #myPara 부분이 포함되어 있지 않으므로 원본 포스터가 원하는대로 작동하지 않을 것이라고 생각합니다. 내가 틀렸다.
blm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.