У меня есть страница, содержащая несколько фреймов. Все фреймы ссылаются на одну и ту же страницу. Каждая страница iframe содержит форму, которую я хочу отправить на сервер. На странице, содержащей фреймы, есть кнопка «Отправить все», которая при нажатии вызывает эту функцию:
function submitAll() {
var fs = d3.selectAll('iframe')[0];
for (var i = 0; i < fs.length; i++) {
try {
var el = fs[i];
var doc = el.contentDocument;
var root = el.contentWindow['root'];
var f = doc.getElementById('submit-form');
removeParentNodeReference(root);
doc.getElementById('POST-name').value = document.getElementById('name').value;
doc.getElementById('POST-email').value = document.getElementById('email').value;
doc.getElementById('POST-phone').value = document.getElementById('phone-number').value;
doc.getElementById('POST-json').value = JSON.stringify(root);
doc.getElementById('POST-submit-info').click();
}
catch (e) {
console.log(e.message);
}
}
Функция захватывает документ содержимого из каждого iframe. С документом iframe он продолжит заполнять некоторые значения формы для формы на странице iframe. Затем функция захватит кнопку формы и щелкнет по ней. Это вызывает функцию в iframe, которая выполняет некоторую обработку и отправляет форму.
В chrome отправляются все формы iframe. Однако в Firefox отправка формы будет происходить только для первой формы. Я зашел в отладчик и вижу, что, хотя он зацикливается на всех страницах iframe, на самом деле происходит только одна отправка.
У кого-нибудь есть идеи?
Спасибо.
d3
для подключения. Ну, я не знаю, как работает d3, но вместо того, чтобы использовать несколько iframe, вам стоит посмотреть на Ajax (вы можете размещать сколько угодно форм, не покидая страницы и без всяких iframe) -> Посмотрите здесь :) - person blex   schedule 27.06.2014