Якщо ви користуєтеся міждоменним доступом, просто повернення src до того ж URL-адреси не завжди може викликати перезавантаження, навіть якщо змінився хеш місця розташування.
Я зіткнувся з цією проблемою під час створення вручну кадрів кнопки Twitter, які не оновлюються, коли я оновлював адреси URL.
Кнопки, як Twitter, мають форму:
.../tweet_button.html#&_version=2&count=none&etc=...
Оскільки Twitter використовує фрагмент документа для URL-адреси, зміна хешу / фрагмента не перезавантажила джерело, а цілі кнопок не відображали мій новий вміст, завантажений ajax.
Ви можете додати параметр рядка запиту для примусового перезавантаження (наприклад: "?_=" + Math.random()
але це втратить пропускну здатність, особливо в цьому прикладі, коли підхід Twitter особливо намагався включити кешування.
Щоб перезавантажити щось, що змінюється лише за допомогою хеш-тегів, потрібно видалити елемент або змінити його src
, дочекатися виходу потоку, а потім призначити його назад. Якщо сторінка все ще є кешованою, це не повинно вимагати звернення до мережі, але викликає перезавантаження кадру.
var old = iframe.src;
iframe.src = '';
setTimeout( function () {
iframe.src = old;
}, 0);
Оновлення : Використовуючи цей підхід створює небажані предмети історії. Натомість щоразу видаляйте та відтворюйте елемент iframe, завдяки чому ця кнопка назад () працює як слід. Також приємно не мати таймера.