Сообщение от danik.js
|
И что насчет потребления ресурсов? Дорого ли стоит iframe?
|
Пустой фрейм, (в отличие от фрейма с наличием src), - создаётся на странице в Опере и Хроме менее 25ms.
В в Опере и Хроме обычно тег следущий за пустым iframe исполняется - рендиться на странице уже при полностью исполненном в DOM элементе(т.е отследить загрузку
пустого iframe скриптом, установленным сразу после тега <iframe в Опере и Хроме часто уже невозможно, (что легко делается при "непустом", т.е <iframe с наличием src и адресом ).
..В ИЕ 6 создание пустого фрейма менее 200 ms.
<script type="text/javascript">
var N=new Date().getTime();
function Tst(){
N = new Date().getTime()-N;
alert('Cкорость создания = '+N+'ms');
}
</script>
<!--тест -->
<div id="Test" style="position:relative;border:red solid 1px;width:200px;height:100px;">
<iframe name="frame" width=100% height=100% style="position:absolute;z-index:-1" onload="Tst()"></iframe>
</div>
Пустой фрейм достаточно часто используется в javascript при создании пользовательских приложений с развязкой javascript библиотек.
К примеру на главной - используем для скорости только нативный ява-скрипт, в динамически создаваемом фрейме - подгружаем(создаем скриптом) тег скрипта подгружаемой библиотеки и необходимый контент,а по окончании работы, фрейм просто изымаем из Dom вместе с библиотеками.
Запускаем во фрейме библиотеку и выполняем чтение HTML на родителе фреймворком
<script>
function TestLibFrame() {
window.docThis = frame1.parent.document;
window.$$ = frame1.jQuery;
var str = 'Запускаем jQuery на странице без библиотеки:';
alert(str +'\n\n' + $$("html",docThis).html())
} setTimeout("if('\v'=='v'){TestLibFrame()}",200); //Запуск для ИЕ;
function Funk0(aa) {
var a='Cтавим javascript - библиотеку во фрейм'
var iframe = aa
var iframeDoc = iframe.contentWindow.document;
var b = iframeDoc.createElement('div');
b.innerHTML=a;//alert(b.innerHTML)
iframeDoc.body.appendChild(b);
var s = iframeDoc.createElement('script');
s.setAttribute("type","text/javascript");
s.src = "http://yandex.st/jquery/1.4.4/jquery.min.js";
//s.setAttribute("onload","parent.TestLibFrame()");
s.onload = TestLibFrame;
b.appendChild(s);
}
</script>
<iframe name=frame1 onload="Funk0(this)"></iframe>