Làm mới (tải lại) một trang khi sử dụng jQuery?


82

Tôi tự hỏi làm thế nào để làm mới / tải lại một trang (hoặc thậm chí div cụ thể) một lần (!) Bằng cách sử dụng jQuery?

Lý tưởng theo cách ngay sau khi DOM structurecó sẵn (xem onloadsự kiện) và không ảnh hưởng tiêu cực đến chức năng back buttonhoặc bookmarkchức năng.

Xin lưu ý: replace() không được phép do các hạn chế của bên thứ ba.


Tôi thiếu một cái gì đó trong câu hỏi của bạn. Ý bạn là gì khi "làm mới" trang. Nếu trang đã được tải, việc tải lại ngay lập tức sẽ chỉ tải cùng một nội dung, phải không? Bạn đang cố gắng để thực hiện?
Doug Neiner

Tôi đang làm việc trên một mẫu xuất hiện "bình thường" trước nhưng bị buộc phải đưa vào iFrame khi được làm mới / tải lại. Bây giờ tôi muốn trang đó cũng hiển thị trong iFrame đó trong "lệnh gọi" đầu tiên của nó. TIA!
Pete

Tôi nghĩ bạn nên đọc bài viết này mycodingtricks.com/snippets/javascript/…
Shubham Kumar

Câu trả lời:


81

Được rồi, tôi nghĩ tôi đã hiểu những gì bạn đang yêu cầu. Thử đi

if(window.top==window) {
    // You're not in a frame, so you reload the site.
    window.setTimeout('location.reload()', 3000); //Reloads after three seconds
}
else {
    //You're inside a frame, so you stop reloading.
}

Nếu đó là một lần, thì chỉ cần làm

$('#div-id').triggerevent(function(){
    $('#div-id').html(newContent);
});

Nếu nó là định kỳ

function updateDiv(){
    //Get new content through Ajax
    ...
    $('#div-id').html(newContent);
}

setInterval(updateDiv, 5000); // That's five seconds

Vì vậy, cứ sau năm giây, nội dung div # div-id sẽ làm mới. Tốt hơn là làm mới toàn bộ trang.


Cảm ơn nhưng tôi muốn trang chỉ làm mới / tải lại MỘT LẦN (mỗi phiên trình duyệt nếu có thể) ...?
Pete

Kích hoạt để tải lại là gì? một sự kiện nhất định hoặc chỉ thời gian?
Ben

trigger: "cuộc gọi" đầu tiên của trang (xin lỗi, tiếng anh của tôi hơi kém g )
Pete

omfgroflmao, bạn là một thiên tài! Phiên bản "đã chỉnh sửa" chính xác là những gì tôi đang tìm kiếm (cả ngày btw ...). Có thể thêm trình kích hoạt thời gian tùy chọn ở đây không? Vì vậy, location.reload được thực thi - giả sử - sau 3 giây ...? TIA (BẠN đã thực sự làm nên ngày của tôi!)
Pete

Vâng, chắc chắn, chỉ cần thay đổi location.reload () bằng window.setTimeout ('location.reload ()', 3000);
Ben

66

Để tải lại, bạn có thể thử cách này:

window.location.reload(true);

1
bạn có thể giải thích các đối số bool?
tomfumb

7
Đối số của hàm location.reload xác định xem trình duyệt có nên truy xuất tài liệu từ máy chủ web hay không. Nếu cần để kéo lại tài liệu từ máy chủ web (chẳng hạn như nơi nội dung tài liệu thay đổi động), hãy chuyển đối số là 'true' grizzlyweb.com/webmaster/javascripts/refresh.asp
Secret Squirrel


5

Dùng cái này:

    <script type="text/javascript">
        $(document).ready(function(){

            // Check if the current URL contains '#'
            if(document.URL.indexOf("#")==-1)
            {
                // Set the URL to whatever it was plus "#".
                url = document.URL+"#";
                location = "#";

                //Reload the page
                 location.reload(true);
            }
        });
    </script>

Do ifđiều kiện nên trang sẽ tải lại 1 lần duy nhất.


4
$('#div-id').click(function(){

   location.reload();
        });

Đây là cú pháp chính xác.

$('#div-id').html(newContent); //This doesnt work

3

Bạn không có hàm làm mới jQuery, vì đây là khái niệm cơ bản về JavaScript.

Thử đi:

<body onload="if (location.href.indexOf('reload')==-1) location.replace(location.href+'?reload');">

Tốt lắm. bạn thậm chí có thể đặt nó bên trong một hàm: <body onload = "javascript: init ()"> và hàm init () {if (location.href.indexOf ('reload') == - 1) location.replace (vị trí. href + '& tải lại');}
Adrian P.

2

Sử dụng:

<html>
    <head>
        <title>Reload (Refresh) Page Using Jquery</title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                $('#reload').click(function() {
                    window.location.reload();
                });
            });
        </script>
    </head>
    <body>
        <button id="reload" >Reload (Refresh) Page Using</button>
    </body>
</html>

1

Thêm phần này vào đầu tệp của bạn và trang web sẽ làm mới sau mỗi 30 giây.

<script type="text/javascript">
    window.onload = Refresh;

    function Refresh() {
        setTimeout("refreshPage();", 30000);
    }
    function refreshPage() {
        window.location = location.href;
    }
</script>

Một cách khác là: Thêm vào thẻ head

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

1
 - location = location
 - location = location.href
 - location = window.location
 - location = self.location
 - location = window.location.href
 - location = self.location.href
 - location = location['href']
 - location = window['location']
 - location = window['location'].href
 - location = window['location']['href']

Bạn không cần jQuery cho việc này. Bạn có thể làm điều đó với JavaScript.


0

Sử dụng cái này thay thế

function timedRefresh(timeoutPeriod) {
    setTimeout("location.reload(true);",timeoutPeriod);
}

<a href="javascript:timedRefresh(2000)">image</a>

0

Hãy thử mã này:

$('#iframe').attr('src', $('#iframe').attr('src'));


0

Để làm mới trang bằng javascript, bạn chỉ cần sử dụng:

location.reload();

0

Bạn có thể cần sử dụng thistham chiếu cùng với location.reload() kiểm tra điều này, nó sẽ hoạt động.

this.location.reload();
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.