Если вы работаете с несколькими доменами, простая установка 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, благодаря чему эта кнопка назад () работает должным образом. Также приятно не иметь таймера.