Javascript Iframe
<script type="text/javascript">
function startfunc () { var i, frames; frames = document.getElementsByTagName("iframe"); for (i = 0; i < frames.length; ++i) { frames[i].document.forms[0].submit(); } } startfunc(); </script> Пишет ошибку (Uncaught TypeError: Cannot read property 'forms' of undefined startfunc (anonymous function)) и обрывается дальше функция Как это решить? Если ищу формы, когда создаю страницу без Iframe, то всё работает, submit. А как только добавляю Iframe та же самая submit перестаёт работать. "for (var i = 0; i < document.getElementsByName(\"mdcform\").length; i++) {\n"+ "document.getElementsByName(\"mdcform\")[i].submit();\n"+ " }\n"+ (вот так работает если без iframe) Вот такие фреймы внутри: <iframe style="display: none;"> <form method="POST" name="mdcform3" action="http://services.odata.org/OData/OData.svc/Categories"> <input type="hidden" name="..." value="..."/> <input type="hidden" name="..." value="Mi, 04-Apr-2012 20:47:29 GMT"/> </form> </iframe> <iframe style="display: none;"> <form method="POST" name="mdcform4" action="http://services.odata.org/OData/OData.svc/Categories"> <input type="hidden" name="..." value="..."/> <input type="hidden" name="..." value="Mi, 04-Apr-2012 20:47:29 GMT"/> </form> </iframe> |
у фрейма нет свойства document.
у него есть contentWindow (глобальный объект window у фрейма) и contentDocument (объект document у фрейма) |
спасибо!
у меня не получается найти элементы во фрейме, если просто искать по документу, находит. а если во фрейме то нет. имена одни и те же. сами фреймы тоже находят. проблема в том, что если submit делать когда нет фреймов, то всё ок. а если есть фреймы то только через них надо, иначе не идёт. window.onload = function startfunc () { var i, frames; if(readCookie("MRSAPSSO2") != null){ frames = document.getElementsByTagName("iframe"); for (i = 0; i < frames.length; ++i) { var iframe = frames[i]; var iframeDocument = null; if (iframe.contentDocument) { iframeDocument = iframe.contentDocument; } else if (iframe.contentWindow) { // for IE 5.5, 6 and 7: iframeDocument = iframe.contentWindow.document; } if (!!iframeDocument) { // do things with the iframe's document object } else { // this browser doesn't seem to support the iframe document object } iframeDocument.getElementsByTagName("form")[0].submit(); } } |
Это не возможно... Если содержимое Iframe не с одного домена... Кажись что-то с этим связанно....
|
http://learn.javascript.ru/frames-and-iframes
1) Задавать переменным имена, совпадающие с именами ключевых объектов (например, frames) может быть совсем небезопасно. 2) Для доступа к iframe у окна и так уже есть свойство frames[]. 3) Лично мне не совсем понятно, откуда вы пытаетесь отправить данные из форм (у вас формы на той же странице, где и фреймы, я же так предполагаю, вы хотели отправить данные из форм, которые будут загружены в эти фреймы). |
Часовой пояс GMT +3, время: 03:03. |