Як перезавантажити сторінку за допомогою JavaScript


873

Як я можу перезавантажити сторінку за допомогою JavaScript?

Мені потрібен метод, який працює у всіх браузерах.

Відповіді:


946

JavaScript 1.0

window.location.href = window.location.pathname + window.location.search + window.location.hash;
// creates a history entry

JavaScript 1.1

window.location.replace(window.location.pathname + window.location.search + window.location.hash);
// does not create a history entry

JavaScript 1.2

window.location.reload(false); 
// If we needed to pull the document from
//  the web-server again (such as where the document contents
//  change dynamically) we would pass the argument as 'true'.

81
'true' змусить сторінку перезавантажитись із сервера. "false" буде завантажено з кешу, якщо є.
barro32

3
Чи .reload(true)додається до історії? Якщо так, то як уникнути цього з перезавантаженням?
Johnt предприниматель

12
Ось посилання на документи: developer.mozilla.org/en-US/docs/Web/API/window.location
Джастін Етьє

1
Це найкраща відповідь і має бути на вершині. Моя проблема з іншими функціями полягає в тому, що вони не оновлювали сторінку вмістом із сервера, а замість цього використовували кеш, тому рішення JavaScript 1.2 було для мене найкращим і єдиним рішенням.
Ryan Coolwebs

8
.reload (true) або .reload (false) застаріло відповідно до моїх IDE і github.com/Microsoft/TypeScript/isissue/28898 - тепер слід використовувати .reload ()
понеділок74

388
location.reload();

Дивіться цю сторінку MDN для отримання додаткової інформації.

Якщо ви оновлюєтесь після onclickцього, вам потрібно буде повернути помилкову безпосередньо після

location.reload();
return false;

22
в чому різниця між location.reload()і window.location.reload()?
Раптор

53
@ShivanRaptor Зазвичай жоден, у контексті веб-браузерів, locationне такий, window.locationяк windowглобальний об’єкт.
Лекенштейн

1
не забувайте, return false;якщо зателефонуєте до цього телефону за посиланням.
Ріміан

2
Я вважаю за краще використовувати window.location.reload();для читабельності, як це locationможе бути локальна змінна - тоді як ви зазвичай уникаєте змінних імені window.
Єті

217

Ось 535 способів перезавантажити сторінку за допомогою JavaScript , найлегше location = location.

Це перші 50:

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']
location = window.location['href']
location = self['location']
location = self['location'].href
location = self['location']['href']
location = self.location['href']
location.assign(location)
location.replace(location)
window.location.assign(location)
window.location.replace(location)
self.location.assign(location)
self.location.replace(location)
location['assign'](location)
location['replace'](location)
window.location['assign'](location)
window.location['replace'](location)
window['location'].assign(location)
window['location'].replace(location)
window['location']['assign'](location)
window['location']['replace'](location)
self.location['assign'](location)
self.location['replace'](location)
self['location'].assign(location)
self['location'].replace(location)
self['location']['assign'](location)
self['location']['replace'](location)
location.href = location
location.href = location.href
location.href = window.location
location.href = self.location
location.href = window.location.href
location.href = self.location.href
location.href = location['href']
location.href = window['location']
location.href = window['location'].href
location.href = window['location']['href']
location.href = window.location['href']
location.href = self['location']
location.href = self['location'].href
location.href = self['location']['href']
location.href = self.location['href']
...

84
це цікаво, але зараз я розгублений
Arun Prasad ES

14
Він також підкреслює особливість Javascript :)
Jeremy Thille

51
Мені особисто не подобається ця відповідь, оскільки це просто показує цілий ряд різних можливостей зміни місця розташування. Ці способи - перестановки різних способів виконання функції або доступу до атрибута в JavaScript. НЕ різні способи перезавантажити сторінку.
Джошуа Беренс

40
Впевнені, що їх ще більше, як-от:window.window.window['window'].location = window['window'].window['window']['window']['window']['window']['window']['window']['location']
Ренато

84

Ви можете виконати це завдання за допомогою window.location.reload();. Оскільки існує багато способів зробити це, але я думаю, що це відповідний спосіб перезавантажити той же документ за допомогою JavaScript. Ось пояснення

window.locationОб'єкт JavaScript може бути використаний

  • щоб отримати поточну адресу сторінки (URL)
  • щоб перенаправити браузер на іншу сторінку
  • щоб перезавантажити ту саму сторінку

window: у JavaScript представляє відкрите вікно в браузері.

location: у JavaScript зберігається інформація про поточну URL-адресу.

locationОб'єкт як фрагмент windowоб'єкта і викликається через window.locationвласність.

location Об'єкт має три методи:

  1. assign(): використовується для завантаження нового документа
  2. reload(): використовується для перезавантаження поточного документа
  3. replace(): використовується для заміни поточного документа на новий

Тому тут нам потрібно скористатися reload(), оскільки це може допомогти нам у перезавантаженні того ж документа.

Тож використовуйте це як window.location.reload();.

Демонстрація в Інтернеті на jsfiddle

Щоб попросити браузер отримати сторінку безпосередньо з сервера, а не з кешу, ви можете передати trueпараметр location.reload(). Цей метод сумісний з усіма основними браузерами, включаючи IE, Chrome, Firefox, Safari, Opera.


2
А-а-а! replace()виявилося рішення, яке я шукав, тому що мені потрібно було перезавантажити сторінку з невеликою зміною рядка запитів.
Бернар Гіммен

Від w3schools: "Різниця між призначенням () та заміною () полягає в тому, що заміна () видаляє URL-адресу поточного документа з історії документа. Це означає, що не можна використовувати кнопку" назад "для повернення до оригінальний документ ".
pasaba por aqui

54

Спробуйте:

window.location.reload(true);

Параметр, встановлений на "true", перезавантажує нову копію з сервера. Залишивши її, сервіс відображатиметься з кешу.

Більше інформації можна знайти в MSDN та в документації на Mozilla .


1
що робити, якщо я хочу оновити зовнішню веб-сторінку www.xyz.com/abc?
DoIt

@Dev: Спробуйте "замінити", як згадувалося пізніше
Jean Paul AKA el_vete

@Orane: Особливо мені подобається простота та винахідливість цієї відповіді, оскільки я даю безліч варіантів просто для задоволення запиту оператора, що сказав, дякую, що ви надали посилання, на яке посилаються повноваження і в цій ситуації, для подальшої посилання як кожен браузер. є власний механізм JS для візуалізації ... Я думаю, що питання дуже загальне і що воно має залежати від того, для чого ви цього хочете, тому що ще веб-посилання: " phpied.com/files/location-location/location- location.html "може повністю задовольнити опцію для цього питання. Однак цей мені допоміг;)
Жан Пол АКА el_vete

1
Це все-таки правда? Обидва ці посилання не містять жодного параметра для перезавантаження.
Рюдігер Шульц

50

Я шукав інформацію про перезавантаження на сторінках, отриманих із запитами POST, наприклад після надсилання method="post"форми.

Щоб перезавантажити сторінку, що зберігає дані POST, використовуйте:

window.location.reload();

Щоб перезавантажити сторінку, відкидаючи дані POST (виконайте GET-запит), використовуйте:

window.location.href = window.location.href;

Сподіваємось, це може допомогти іншим, хто шукає ту саму інформацію.


Дякуємо за відповідь, включаючи посилання на перезавантаження документа, отриманого із POSTзапитом.
Крістофер Шульц

Хороша відмінність між методами GETта POSTметодами
Хассан Байг

Ця відповідь була занадто далеко вниз!
Грег Рендалл

1
window.location.href = window.location.hrefне перезавантажує сторінку, якщо поточна URL-адреса містить a #. Ви можете видалити хеш, якщо він вам не потрібен window.location.href = window.location.href.split('#')[0];.
Roland Starke


37

Це працює для мене:

function refresh() {    
    setTimeout(function () {
        location.reload()
    }, 100);
}

http://jsfiddle.net/umerqureshi/znruyzop/


Мені це зручніше, оскільки це дозволяє уникнути умови циклу на стороні сервера
ILMostro_7

1
Я особливо вдячний за включення функції тайм-аута, оскільки у мене є повідомлення, яке я все ще хочу переглянути, перш ніж відбудеться оновлення. Кудо!
Метт Кременз

ви можете встановити різні значення як другий аргумент функції setTimeout, але це не буде працювати, перезавантаження відбудеться негайно, як це вирішити?
О.Куз

1
@ O.Kuz не думаю так. скажемо, якщо встановити значення 5000ms, то перезавантаження відбудеться через 5 секунд. дивіться jsfiddle.net/umerqureshi/znruyzop/446
umer

1
Мені потрібно знайти помилку в коді) Дякую!
О.Куз

15

Якщо покласти

window.location.reload(true);

на початку вашої сторінки без жодної іншої умови, яка визначає, чому цей код працює, сторінка завантажиться, а потім продовжуватиметься перезавантаження, поки ви не закриєте веб-переглядач.


Ну, або поки ви не відкриєте іншу URL-адресу. Це, мабуть, залежить від здатності браузера обробляти постійні (повторні) завантаження.
adamdunson

добре, що залежить від місця його розміщення, як ви правильно сказали. Ми маємо на увазі тут лише те, що, можливо, тег прив’язки не є інтуїтивним елементом для виконання такої дії, як перезавантаження сторінки. Пропозиція: ми покладаємось на інший об’єкт інтерфейсу як цільовий, щоб зробити подію onclick. Це можна зробити в jQuery після завантаження сторінки, націливши на div, наприклад, якщо ви прикрасите його css .. Це залежить від того, що ви хочете зробити з ним. У цьому контексті кнопка, а не кнопка типу введення. Якщо ми не плануємо передавати аргумент в додаток, це здається більш доцільним.
Жан Пол АКА el_vete

IE: <кнопка onclick = "javascript: window.location.reload (true);"
Жан Пол АКА el_vete

11
location.href = location.href;

5
Сучасні браузери ігнорують це, оскільки href не змінюється, тому не потрібно перезавантажувати його. Ви повинні використовувати це лише як відмову для старих браузерів без перезавантаження: (location.reload? Location.reload (): location.href = location.href)
Radek Pech

@RadekPech Які старші веб-переглядачі не мають location.reload()?
Маттіас

8

Щоб зробити це легко і просто, використовуйте location.reload(). Ви також можете використовувати, location.reload(true)якщо хочете щось захопити з сервера.


8

За допомогою кнопки або просто помістіть її всередині тега "a" (якір):

<input type="button" value="RELOAD" onclick="location.reload();" />

Спробуйте це для інших потреб:

Location Objects has three methods --

assign() Used to load a new document
reload() Used to reloads the current document.
replace() Used to replace the current document with a new one

1
цікаво ... як щодо <кнопки> </button>? працює так само, правда?
Жан Пол АКА el_vete

1
Це спрацювало як шарм! Дивіться мою відповідь нижче :) Спасибі
Жан Пол AKA el_vete


4

Автоматичне перезавантаження сторінки через 20 секунд.

<script>
    window.onload = function() {
        setTimeout(function () {
            location.reload()
        }, 20000);
     };
</script>

4

Дякую, ця публікація була дуже корисною не тільки для завантаження сторінки із запропонованою відповіддю, але й для того, щоб дати мені ідею розмістити піктограму jQuery UI на кнопку:

<button style="display:block; vertical-align:middle; height:2.82em;"
        title="Cargar nuevamente el código fuente sin darle un [Enter] a la dirección en la barra de direcciones"
        class="ui-state-active ui-corner-all ui-priority-primary" 
        onclick="javascript:window.location.reload(true);">
    <span style="display:inline-block;" class="ui-icon ui-icon-refresh"></span>
    &nbsp;[<b>CARGAR NUEVAMENTE</b>]&nbsp;
</button>

Відредаговано, щоб показати, як це виглядає, коли включено в проект

02.07.2016

Мої вибачення, оскільки це особистий проект, який передбачає використання інтерфейсу jQuery, Themeroller, Icons, таких методів, як вкладки jQuery, але це іспанською мовою;)


@Peter Mortensen: Дякую за редагування, що прототип проекту був зроблений для коледжу, тому його потрібно було скласти іспанською мовою на екранах екрана, що додаються .. мої вибачення за це. залежності, щоб зробити його сумішшю: --- наприклад, віджет ThemeRoller jqueryui.com/themeroller , та додатки, такі як: plugins.jquery.com/qTip2 , datatables.net .. сама бібліотека jQuery тощо, але дія була зроблена на основі деяких відповідей вище: onclick = "javascript: window.location.reload (true);">!
Жан Пол АКА el_vete

3

Це має працювати:

window.location.href = window.location.href.split( '#' )[0];

або

var x = window.location.href;
x = x.split( '#' );
window.location.href = x[0];

Я вважаю за краще це з наступних причин:

  • Вилучає частину після #, забезпечуючи перезавантаження сторінки у веб-переглядачах, які не завантажуватимуть вміст, у якому є.
  • Він не запитує, чи хочете ви перенести останній вміст, якщо ви нещодавно подали форму.
  • Це має працювати навіть у більшості останніх браузерів. Тестували на Lasted Firefox та Chrome.

Крім того, ви можете використовувати для цього завдання останній офіційний метод

window.location.reload()

3

За допомогою цієї кнопки оновіть сторінку

DEMO

<input type="button" value="Reload Page" onClick="document.location.reload(true)">

2

Метод reload () використовується для перезавантаження поточного документа.

Метод reload () виконує те саме, що кнопка перезавантаження у вашому браузері.

За замовчуванням метод reload () перезавантажує сторінку з кешу, але ви можете змусити її перезавантажити сторінку з сервера, встановивши для параметра forceGet значення true: location.reload (true).

        location.reload();

-3

Ви можете просто використовувати

window.location=document.URL

де document.URL отримує поточну URL-адресу сторінки, а window.location перезавантажує її.


2
Сучасні браузери ігнорують це, оскільки href не змінюється, тому не потрібно перезавантажувати його. Ви повинні використовувати це лише як відмову для старих браузерів без перезавантаження: (location.reload? Location.reload (): location = document.URL)
Radek Pech
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.