Улучшение загрузки страницы с несколькими фреймами с одним и тем же источником - PullRequest
0 голосов
/ 09 мая 2018

У меня на странице несколько фреймов. Все эти 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]();}
}

Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...