powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Приколы с iframe
5 сообщений из 5, страница 1 из 1
Приколы с iframe
    #36133046
NT Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
function AJAXRequest2(url, param, formObj) {
    var iframe = createIFrame();      
    var iform = formObj.cloneNode(true);
    var ibody = window.frames[iframe.id].document.getElementsByTagName("body")[ 0 ];
    alert(ibody);
    window.frames[iframe.id].document.getElementsByTagName("body")[ 0 ].appendChild(iform);
}

Этот небольшой кусочек кода всего лишь копирует форму в iframe. Да кстати если его написать как здесь, то он даже работает!
Самое интересное начинается в Firefox-е, если начать приводить код в порядок.

Выкидываем alert, все перестает работать.
Код: plaintext
1.
2.
3.
4.
5.
function AJAXRequest2(url, param, formObj) {
    var iframe = createIFrame();      
    var iform = formObj.cloneNode(true);
    var ibody = window.frames[iframe.id].document.getElementsByTagName("body")[ 0 ];
    window.frames[iframe.id].document.getElementsByTagName("body")[ 0 ].appendChild(iform);
}

или пытаемся записать оптимальнее
Код: plaintext
1.
2.
3.
4.
5.
6.
function AJAXRequest2(url, param, formObj) {
    var iframe = createIFrame();      
    var iform = formObj.cloneNode(true);
    var ibody = window.frames[iframe.id].document.getElementsByTagName("body")[ 0 ];
    alert(ibody);
    ibody.appendChild(iform);
}
опять не работает.... :(

Зато в Google Crome и Opera работает даже такой код!
Код: plaintext
1.
2.
3.
4.
5.
function AJAXRequest2(url, param, formObj) {
    var iframe = createIFrame();      
    var iform = formObj.cloneNode(true);
    var ibody = window.frames[iframe.id].document.getElementsByTagName("body")[ 0 ];
    ibody.appendChild(iform);
}

Это что глюки лиса или я что-то не понимаю??

Вообще конечная цель заставить клонированную в iframe форму сабмитить данные.

Увы ниже писанный код пока нигде не работает. И непонятно как дальше шаманить, потому что оставлять alert в коде для совместимости в firefox-ом это уже верх всякого изврата.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
function AJAXRequest2(url, param, formObj) {
    var iframe = createIFrame();      
    var iform = formObj.cloneNode(true);
    var ibody = window.frames[iframe.id].document.getElementsByTagName("body")[ 0 ];
//    alert(ibody);
    ibody.appendChild(iform);
    iform.target = iframe.id;
    //window.frames[frame.id].document.getElementsByTagName("form")[ 0 ].Submit();
    var oForm = window.frames[iframe.id].document.getElementsByTagName("form")[ 0 ];
//    alert(oForm);
    oForm.submit();
}
...
Рейтинг: 0 / 0
Приколы с iframe
    #36133462
RAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если createIFrame() и прочее написано в том же духе, что и
Код: plaintext
1.
2.
var ibody = window.frames[iframe.id].document.getElementsByTagName("body")[ 0 ];
window.frames[iframe.id].document.getElementsByTagName("body")[ 0 ].appendChild(iform);
То искать проблему везде по коду. Скопипастите получше код, этот совсем ужасно выглядит.
...
Рейтинг: 0 / 0
Приколы с iframe
    #36133496
NT Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
function createIFrame() {
  var id = 'f' + Math.floor(Math.random() *  99999 );
  var div = document.createElement('div');
  div.innerHTML = '<iframe  src="about:blank" id="'+id+'" name="'+id+'" onload="sendComplete(this)"></iframe>';
  document.body.appendChild(div);
  return document.getElementById(id);
}
...
Рейтинг: 0 / 0
Приколы с iframe
    #36133833
NT Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function AJAXRequest2(url, param, formObj) {
    var iframe = createIFrame();         
    var idocument = window.frames[iframe.id].document;
    var iform = idocument.importNode(formObj, true);
    var ibody = idocument.getElementsByTagName("body")[ 0 ];
    ibody.appendChild(iform);
    idocument.getElementById('ttt').click();
}

Допилил :)

В место cloneNode следовало использовать importNode.

Но проблемы не все решены:
1) В браузерах на базе WebKit форма копируется без параметров. Т.е. В форме на сайте скажем выбрали файл. Далее я копирую форму с этим параметром в iframe и оттуда делаю уже запрос, тем самым реализую закачку файла в фоне. Но теперь это довести до логического конца мешает WebKit. Гуру ау, кто хорошо WebKit знает?

2) Не понимаю почему, когда убираю строчку idocument.getElementById('ttt').click(); в FireFox-се не вижу результата копирования формы. Хотя когда стоит idocument.getElementById('ttt').click(); данные даже приходят как надо от сервера. Ну не могу пока понять этот момент. (В опере, хроме, сафари все прекрасно видно, что и как копируется, в частности видно, что в браузерах на базе WebKit поля формы не переносятся.)
...
Рейтинг: 0 / 0
Приколы с iframe
    #36135914
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ипать, не проще ли написать <form target="frameId" method="post">...</form> ?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Приколы с iframe
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]