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


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.