Динамическое создание Iframe
Нужно создать динамически Iframe
я создаю его таким вот путем
var el = document.createElement("iframe");
document.body.appendChild(el);
el.id = 'iframe';
el.style.width = "50px";
el.style.height = "50px";
el.src = 'test_2.html';
но почему то ругается на document.body.appendChild(el); уже перерыл гугл ни как не могу найти альтернативный вариант создания Ifremа. Толи я поисковиком не умею пользоваться толи я, что то не так делаю. |
Как ругается-то?
|
фаер баг пишет вот такое
document.body is null error source line: [Break on this error] document.body.appendChild(el)[0]; |
Значит body ещё нет, когда вы в него добавить пытаетесь.
|
понял :) спс :)
|
у меня тогда еще вот такой вопрос.
я создаю Iframe с помощью кода приведенного выше, а затем мне нужно взять некоторые значения из той страницы, что он загружает в себя для этого я делаю так
var div = el.contentWindow.document.getElementsByClassName('123')[0].innerHTML;
alert(div.innerHTML);
но alert не вызывается. почему такое может быть ?это из за того, что Iframe создается и тут же удаляется? или написано в коде не правильно? |
getElementsByClassName <- не кросбраузерный метод(если ты конечно его не переопределял(что думаю врятли)). Измени на getElementById, только предварительно измени строку
el.id = 'iframe'; на el.setAttribute("id", "iframe"); И проверь чтоб в этот момент у тебя iframe был! |
Цитата:
|
попробовал так как сказал Skipp
и мне выдало вот такую ошибку el.contentWindow.document.getElementById("123") is null error source line: [Break on this error] var div = el.contentWindow.document.getElementById('123')[0].innerHTML; я так понимаю, что это как и в прошлый раз было с body, только тут Iframe еще не загрузилось, а поиск нужно мне элемента уже начался? или тут в чем то другом ошибка? Kolyaj я не понял вопроса:) получается я клацаю на кнопку и вижу как появляется Iframe и тут же исчезает но alert так и не появляется |
Чтобы документ в iframe загрузился, нужно время.
|
А что бы правильно дождаться - нужно в таймере обработку делать.
К примеру так:
var doc = iframe.contentDocument ? iframe.contentDocument :
iframe.contentWindow.document ? iframe.contentWindow.document :
window.frames['name iframe'].document
if (doc.location.href != 'about:blank') {
var body = doc.body
// ...
}
|
el.setAttribute("id", "iframe");
В IE может и не сработать... Лучше так:
var ua = navigator.userAgent.toLowerCase()
var is_opera = ua.indexOf('opera') >= 0
var is_ie = !is_opera && ua.indexOf('msie') >= 0
var name = 'iframe'
var el
if (is_ie) el = document.createElement('<iframe id=' + name + '>')
else {
el = document.createElement('iframe')
el.setAttribute('id', name)
}
// ...
|
ого всем спасибо сейчас буду пробовать:)
|
| Часовой пояс GMT +3, время: 04:37. |