клонировать форму в iframe и затем отправить форму
Сложно увидеть из примера, но если вы пытаетесь клонировать элемент в другой документ, это не разрешено стандартом DOM. Узлы, созданные одним документом, не могут быть вставлены в другой документ. Содержимое iframe - это другой документ.
Способ сделать это должен использовать document.importNode()
:
var iframe= document.getElementById('myiframe');
var idoc= iframe.contentDocument || iframe.contentWindow.document;
var form= document.getElementById('myform');
idoc.body.appendChild(idoc.importNode(form, true));
Но IE вообще не поддерживает importNode. С другой стороны, IE уже поддерживает XMLHttpRequest, так что это может не быть проблемой. Для каких браузеров вы это реализуете, которые не поддерживают XMLHttpRequest
? Осторожно: браузеры, которые старые / сломанные могут также не поддерживать importNode
или даже jQuery!
Обратите внимание: если вы хотите использовать удобные методы jQuery для создания узлов в документе iframe, у вас должна быть вторая копия jQuery, загруженная тегом в iframe, которую вы вызываете через копию * другого документа $
. Каждый экземпляр jQuery привязан к документу, который его включил; Оболочка jQuery из одного документа не может быть передана другому документу.
var inp= idoc.$('<input type="hidden" name="thing" />');
inp.val(thingvalue);
idoc.$('#myform').append(inp);
...