Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подставить произвольное значение в адрес iframe (https://javascript.ru/forum/misc/68243-podstavit-proizvolnoe-znachenie-v-adres-iframe.html)

Nikk 04.04.2017 11:41

Подставить произвольное значение в адрес iframe
 
Добрый день!
Подгружаю на страницу через iframe файл, который генерируется автоматически (и часто обновляется).
Проблема в том, что этот файл кешируется браузером и посетителю показывается старая версия.

Необходимо заставить браузер при каждой загрузке страницы загружать фрейм заново.

iframe выводится на страницу так:
Код:

<iframe src="file1.htm" id="change_frame"></iframe>
(Здесь id="change_frame" используется для другого скрипта и к задаче отношения не имеет).

Нашел вот такой скрипт, который генерирует каждый раз новую ссылку (браузер будет загружать ее каждый раз заново):

Код:

<script>
document.getElementById(ID).href = 'file1.htm?' + Math.random();
</script>

Если бы в коде фрейма уже не использовалось бы значение id для другого скрипта, можно было бы вставить новую ссылку типа file1.htm?0.121515454556445 с помощью id скрипта Math.random. Но id уже используется.
Как здесь поступить? Можно ли в поле src каким-то образом вписать значение 'file1.htm?' + Math.random()?

SV0L0CH 04.04.2017 12:12

document.getElementById(ID).href = document.getElementById(ID).href.replace(/\?.*$/, '?' + Math.random())

Nikk 04.04.2017 12:29

Спасибо за ответ! Но вы не могли бы чуть подробнее пояснить? Что мне вставлять в поле src тега iframe?

SV0L0CH 04.04.2017 23:59

Походу простая замена @src в <iframe/> ни к ему не приводит. Вывод: надо будет создавать новый <iframe/> и вставлять в него изменённый @src .
PS фреймами не пользуюсь так что не скажу баг это или фича :-?

Nikk 05.04.2017 07:16

Только непонятно, как это реализовать...

Dilettante_Pro 05.04.2017 13:53

<body>
Всегда свежий фрейм
</body>
<script>
var ifrm = document.createElement('iframe');
ifrm.style="width:100%;height:250px;";
ifrm.src = "https://javascript.ru/forum/misc/68243-podstavit-proizvolnoe-znachenie-v-adres-iframe.html";
var parentElem = document.body;
parentElem.appendChild(ifrm);
</script>

Nikk 25.05.2017 08:34

Решил проблему так:

var ms;
Today = new Date();
ms = Today.getMilliseconds();
var url="file.html?"+ms

ruslan_mart 25.05.2017 16:08

var frame = document.getElementById('change_frame');

frame.src = 'file.html?' + Date.now();


Часовой пояс GMT +3, время: 18:13.