Динамическое создание 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, время: 22:47. |