Javascript tải lại trang với giá trị băm


80

Tôi đang cố gắng làm mới trang bằng câu lệnh này trong tệp javascript bên ngoài sau một số quy trình.

window.location.href = window.location.href

Nó hoàn toàn tải lại trang nhưng tôi muốn cuộn đến vị trí cụ thể sau khi tải lại. Vì vậy, tôi đặt điều này trên trang.

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

Và thay đổi javascript thành

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

Mã này cũng không tải lại / làm mới trang

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

Khi tôi làm điều đó, nó không tải lại trang nào cả. Có cách nào tôi có thể tải lại trang với vị trí thanh cuộn không?


Sử dụng tệp PHP để chuyển hướng đến trang mới?
Derek 朕 會 功夫

Không chỉ trang html. Mục đích là làm mới trang sau khi chạy một số hàm javascript và cuộn nó trở lại vị trí của đoạn văn đó.
Jonas T

1
bạn đang gọi window.location.hrefnhư thế nào? nếu bạn đang làm điều đó trên tải trang và bạn đang đánh f5 và bạn đang sử dụng firefox (hoặc trình duyệt khác có thể cuộn hoặc nơi bạn đã trước khi f5 trên refresh) này có thể là vấn đề
ajax333221

Câu trả lời:


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

Đầu tiên hãy thêm hàm băm, sau đó tải lại trang. Hàm băm sẽ vẫn ở đó và trang được tải lại.

Đã kiểm tra, hoạt động.


ps: Nếu một hàm băm đã tồn tại trong URL, bạn có thể muốn trực tiếp thay đổi nó qua location.hashthay vì .href.


1
Một thứ khác. Nó đã làm mới trang nhưng nó bao gồm dữ liệu bài đăng sau khi tải lại. Làm thế nào tôi có thể làm sạch chúng? Những dữ liệu bài đăng đó đang ngăn tôi xóa hàng dữ liệu.
Jonas T

Hãy đọc cái này. stackoverflow.com/questions/2405117/… Nó bao gồm những dữ liệu POST đang ngăn tôi thực hiện các sự kiện đăng lại khác.
Jonas T

À, tôi không biết nhiều về POST. Bạn có thể đặt một câu hỏi mới về nó, nếu bạn muốn.
Derek 朕 會 功夫

1
Cuối cùng, tôi đã phải sử dụng chuỗi truy vấn. "window.location.href = url +" & action = reload ";". Kiểm tra chuỗi truy vấn hành động trong javascripot trên sự kiện tải trang và thực hiện việc này "window.location.hash =" #uploadImgSection ";". Nó không phải là cách nó nên hoạt động nhưng tôi phải làm theo cách này để làm cho nó hoạt động ngay bây giờ.
Jonas T

@Derek 朕 會 功夫 bạn là một thiên tài :)
Attila Naghi

35

Tôi muốn cập nhật câu hỏi này vì tôi thấy rằng việc sử dụng window.location.href += "#mypara"sẽ tiếp tục thêm tham số vào url ngay cả khi nó tồn tại. Tôi đã tìm thấy cách tốt hơn là sử dụng

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

25

Đây thực sự là một bài viết cũ, tôi vẫn sẽ cố gắng trả lời với sự kết hợp của các câu trả lời đúng.

  1. location.reload()location.reload(true)hoạt động giống như F5 trên trình duyệt. Thao tác này sẽ đăng tất cả dữ liệu biểu mẫu trở lại máy chủ nếu việc tải trước đó đã thực hiện.
  2. location.hrefsẽ không làm mới trang cho đến khi có một thay đổi URL được trình duyệt công nhận. thay đổi trong hàm băm (#paramname) không đủ điều kiện để thay đổi URL và do đó chỉ thực hiện location.href+="#paramname"sẽ không hoạt động.

Vì vậy, location.href+="?anything#paramname"nên tải lại trang như một yêu cầu mới cũng như ?anythingthay đổi trong URL.


Câu trả lời hay đấy. Đây là phiên bản đã nấu: window.location = '<? Php echo $ _POST [' back ']?> & Rand =' + ((new Date ()). GetTime ()% 1000000000) + '# myhash';
Johan

4
Một cái khác: location.href + = '& rand =' + Math.rand () + '# myhash';
Johan

IMO này trả lời câu hỏi tốt nhất so với các bài viết khác. Nó không yêu cầu thay đổi mã cơ bản mà có thể đã được viết như một phần của thư viện chẳng hạn.
thekingoftruth

1
Johan, Math.rand () nên được đổi thành Math.random ()
tomJO

Câu trả lời gần nhất (có thể các câu trả lời khác đúng vào năm 2012, nhưng tất cả đều sai vào năm 2018), nhưng nó có vấn đề khi thêm các mục nhập vào lịch sử thanh địa chỉ của người dùng, điều này không tốt nếu bạn chỉ đang cố gắng làm mới cùng một tiểu bang lịch sử ...
Glenn Maynard

0
var loc = location.hash;
location.hash = " ";
location.hash = loc;

Câu trả lời chỉ có mã không hữu ích lắm. Cái này đang làm gì vậy? Tại sao nó hoạt động?
random_user_name

-1

Thử cái này

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

4
Điều này cũng không tải lại trang.
Jonas T

Câu trả lời chỉ có mã "Hãy thử này" không hữu ích lắm. Nó đang làm gì? Tại sao nó hoạt động?
random_user_name

-1

Điều này đã làm việc cho tôi:

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

-1

Công việc này cho tôi

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

-1

Điều này đã làm việc cho tôi

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

Về cơ bản, đây có vẻ là một cách dài hơn để thực hiện những gì các câu trả lời khác đã làm, thêm vào đó, tôi không nghĩ rằng nó bao gồm phần #myPara nên sẽ không hoạt động như người đăng ban đầu muốn, mặc dù vui lòng chỉnh sửa câu trả lời để làm rõ điều đó nếu Tôi đã sai.
blm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.