У меня на странице несколько фреймов.
Все эти iframe имеют один и тот же источник (в том же домене, что и главная страница, на которой они содержатся; каждый iframe в конечном итоге просто показывает другую область этого самого источника).
Это работает хорошо в соответствии с этим решением, которому я следовал:
Несколько фреймов, отправляющих ОДИН запрос на один и тот же SRC
У меня загружены все мои iframe (каждый из них правильно показывает свою область этой общей страницы).
Но на самом деле каждый iframe делает независимый запрос к источнику. И страница загружается довольно медленно.
Отсюда мой вопрос, чтобы улучшить этот процесс:
есть ли способ загрузить первый iframe (в данном примере f1) и только затем загрузить все остальные с тем же "содержимым" (то есть с той же страницей - даже если каждый из них показывает другая область этого, но эта часть уже работает хорошо). Мне не удалось сделать это с помощью srcdoc.
Идентификаторы ifames в html: f1, f2, f3 и т. Д .:
<iframe style="border: 0px none; height: 1000px; width: 1000px; margin-left: -107px; margin-top: -547px; " id="f1" scrolling="no" src="MYSOURCE.html" >
</iframe>
<iframe style="border: 0px none; height: 1000px; width: 1000px; margin-left: -107px; margin-top: -616px; " id="f2" scrolling="no" srcdoc="" src="" >
</iframe>
<iframe style="border: 0px none; height: 1000px; width: 1000px; margin-left: -107px; margin-top: -685px; " id="f3" scrolling="no" srcdoc="" src="" >
и так далее ...
Первая функция ожидает загрузки первого кадра iframe. Затем вторая попытается заполнить последующие той же исходной страницей.
FuncOL = new Array();
function StkFunc(Obj) {
FuncOL[FuncOL.length] = Obj;
}
function loadingpageinf1(){
let oldDoc = f1.contentDocument;
let timer = setInterval(() => {
if (f1.contentDocument == oldDoc) return;
f1.contentDocument.addEventListener('DOMContentLoaded', () => {
f1.contentDocument.body.prepend('Hello, world!');
});
clearInterval(timer);
}, 100);
}
StkFunc(loadingpageinf1);
function Multipleiframes(){
var frames=window.frames;
for (var i=2; i<4; i++){
var frame="f"+i;
document.getElementById(frame).srcdoc = document.getElementById(f1).srcdoc ;
}
}
StkFunc(Multipleiframes);
window.onload = function() {
for(i=0; i<FuncOL.length; i++)
{FuncOL[i]();}
}
Спасибо за вашу помощь.