Làm thế nào để tải lại trang cứ sau 5 giây?


183

Tôi đang chuyển đổi một bố cục sang html; một khi tôi thực hiện các thay đổi về mã / html / css, mỗi lần tôi phải nhấn F5. Có giải pháp javascript / jQuery đơn giản nào cho việc này không? Tức là sau khi tôi thêm tập lệnh, tải lại toàn bộ trang cứ sau 5 giây (hoặc một số thời gian cụ thể khác).

Câu trả lời:


382
 <meta http-equiv="refresh" content="5; URL=http://www.yourdomain.com/yoursite.html">

Nếu nó phải có trong tập lệnh, hãy sử dụng setTimeout như:

setTimeout(function(){
   window.location.reload(1);
}, 5000);

4
Tôi nghĩ rằng đây có lẽ là một cách tốt hơn để làm nó hơn trong javascript.
Giàu

1
Nếu trường hợp sử dụng là trang cần làm mới cho khách truy cập thì tôi có thể đồng ý, nhưng với mục đích phát triển, có một khối mã mà bạn có thể thả vào trang mà không phải cập nhật URI mỗi lần là một lợi thế. Tùy thuộc vào JS không phải là vấn đề khi nhà phát triển là toàn bộ đối tượng mục tiêu.
Quentin

4
location.reload (1) sẽ lặp lại POST nếu trang hiện tại là kết quả của POST. Điều đó có thể không được mong muốn, nếu bạn đang tìm cách sao chép meta refresh trong Javascript.
Reuben

2
Tải lại trang hiện tại không yêu cầu bạn chỉ định trang, Chỉ cần:<meta http-equiv="refresh" content="5">
ashleedawg

145

Để tải lại cùng một trang, bạn không cần đối số thứ 2. Bạn chỉ có thể sử dụng:

 <meta http-equiv="refresh" content="30" />

Điều này kích hoạt tải lại cứ sau 30 giây.


3
Nó được khuyến khích khi sử dụng để chuyển hướng . Nó không được phản đối. (Và nó rất hữu ích khi bạn muốn làm mới một trang và quá lười để học ajax :)
DinoCoderSaurus

Điều này không làm việc cho tôi. Đã thử thêm dòng này vào codepen này nhưng không có kết quả. codepen.io/css-support/pen/bspdK
lolololol ol

1
@lololololol Bạn phải thêm nó vào cài đặt "Stuff for <head>" trong khu vực Cài đặt bút của HTML. Nó không hoạt động nếu bạn đặt nó trong kịch bản thực tế.
Bret

23

Để tự động tải lại và xóa bộ nhớ cache sau 3 giây, bạn có thể thực hiện dễ dàng bằng cách sử dụng chức năng javascript setInterval. Đây là mã đơn giản

$(document).ready(function() {
  setInterval(function() {
    cache_clear()
  }, 3000);
});

function cache_clear() {
  window.location.reload(true);
  // window.location.reload(); use this if you do not remove cache
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<p>Auto reload page and clear cache</p>

và bạn cũng có thể sử dụng meta cho việc này

<meta http-equiv="Refresh" content="5">

Làm mới trang <script> đang hoạt động nhưng bạn có thể giải thích cách xóa bộ đệm không ?? hoặc đó là jus làm mới bộ đệm .. xin giải thích.
Bạc

stackoverflow.com/questions/5721704/ , nếu bạn muốn dựa nhiều hơn thì hãy google nó
Shafiqul Hồi giáo


10

Có một công cụ thay đổi tự động làm mới cho IE. Nó được gọi là Tải lại, và có sẵn tại http://reloadit.codeplex.com . Miễn phí.

Bạn chọn một URL mà bạn muốn tự động tải lại và chỉ định một hoặc nhiều đường dẫn thư mục để theo dõi các thay đổi. Nhấn F12 để bắt đầu theo dõi.

nhập mô tả hình ảnh ở đây

Sau khi bạn đặt nó, giảm thiểu nó. Sau đó chỉnh sửa các tập tin nội dung của bạn. Khi bạn lưu bất kỳ thay đổi nào, trang sẽ được tải lại. như thế này:

nhập mô tả hình ảnh ở đây

Đơn giản. dễ dàng.


2
Công cụ tuyệt vời cho IE, và cảm ơn cho điều hoạt hình. Làm thế nào tôi có thể tạo ra cùng?
Wasim Shaikh

@WasimShaikh - Ghi lại màn hình của bạn vào GIF động bằng ScreenToGIF .
ashleedawg

5

Câu trả lời được cung cấp bởi @jAndy sẽ hoạt động nhưng trong Firefox bạn có thể gặp phải sự cố, window.location.reload (1) ; có thể không hoạt động, đó là kinh nghiệm cá nhân của tôi.

Vì vậy, tôi muốn đề nghị:

setTimeout(function() { window.location=window.location;},5000);

Điều này đã được thử nghiệm và hoạt động tốt.


3

Một lựa chọn thay thế hợp lý nếu bạn đang sử dụng firefox là plugin XRefresh . Nó sẽ tải lại trang của bạn mỗi khi phát hiện tệp đã được sửa đổi. Vì vậy, thay vì chỉ làm mới cứ sau 5 giây, nó sẽ chỉ làm mới khi bạn nhấn lưu trong trình soạn thảo HTML.



2

Nếu bạn đang phát triển và thử nghiệm trong Firefox, có một plug-in được gọi là " ReloadEvery " có sẵn, cho phép bạn tải lại trang web tại thời điểm cụ thể.


1

Điều này sẽ làm việc trên 5 giây.

5000 mili giây = 5 giây

Sử dụng mục tiêu này với mục tiêu _selfhoặc những gì bạn muốn và bất kỳ trang nào bạn muốn bao gồm chính nó:

<script type="text/javascript">
function load()
{
setTimeout("window.open('http://YourPage.com', '_self');", 5000);
}
</script>
<body onload="load()"> 

Hoặc điều này với tự động và không có mã mục tiêu với bất kỳ trang nào bạn muốn, bao gồm chính nó:

<script type="text/javascript">
function load()
{
setTimeout("location.href = 'http://YourPage.com';", 5000);
}
</script>
<body onload="load()"> 

Hoặc điều này nếu đó là cùng một trang để chỉ tải lại chính nó và mũ kéo được nhắm mục tiêu bao giờ bạn muốn:

<script type="text/javascript">
function load()
{
setTimeout("window.open(self.location, '_self');", 5000);
}
</script>
<body onload="load()">

Cả 3 đều làm những điều tương tự, chỉ theo những cách khác nhau.


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.