У меня есть сайт с большим количеством iframe, как это:
<iframes src="expamle.com\page.html?var=blabla&id=42" scrolling="no"></iframe>
Мне нужно изменить var=blabla&id=42
для каждого iFrame. Эти параметры используются в javascript iframe. Есть ли способ кэшировать (давать подсказки браузеру) page.html
(статический) один раз для всех переменных?
Я должен использовать iframe, так как хочу обновить этот код (с другого сервера) и запустить его в другой области.
Нет. Любое изменение строки запроса представляет собой отдельный ресурс для браузера.
Однако вы можете достичь этого эффекта, если можете внести небольшие изменения в page.html. Если вы напишете это так:
<iframes src="expamle.com\page.html#var=blabla&id=42" scrolling="no"></iframe>
Обратите внимание на использование символа #
- что ключ там.
Строка запроса становится просто "page.html" и будет кэшировать этот путь. Тем не менее, Javascript этой страницы будет иметь доступ к переменной document.location.hash
, которая будет содержать " var=blabla&id=42
". Он будет записан как одна строка, но это не должно быть сложно разобрать. Некоторые библиотеки даже используют этот тег для передачи параметров в режиме реального времени в iframe для совместимости с IE6.
Если он используется только в javascript, но на самом деле только серверная сторона с 1 страницей не используется? Но используйте #, он будет рассматривать его как одну и ту же страницу, но на разных анкерных счетах. Так что если test.com/#foo кэшируется, то test.col/# bar тоже (та же самая страница, разные точки привязки)
Вы можете обновлять URL-адреса фреймов из кода:
var fr = document.getElementsByTagName('iframe');
var sites = "1.com,2.com".split(",");
for(var x=0;x<fr.length;x++) {
document.getElementsByTagName('iframe')[x].src="http://"+sites[x];
}
page.html
в том же домене, что и родительская страница?