На работе у нас есть отчет, который создается с IP-адресами. В этом отчете есть ссылка, по которой вы можете открыть новое окно и вызвать скрипт, который отображает карту Google с точками, откуда происходит каждый IP-адрес. В зависимости от отчета, он может вернуть много IP-адресов (около 150 за раз). Поэтому, чтобы это сработало, нам нужно POST-данные к этому сценарию, поскольку при использовании GET максимальный размер URL-адреса превышается в разы.
Итак, когда я нажимаю эту ссылку, чтобы открыть карту, я вызываю написанную мной функцию Javascript, которая принимает IP-адреса, создает тег формы с целевым атрибутом, который указывает на новое окно, которое будет открывается, добавляет его к текущей странице, затем добавляет скрытые вводы IP-адресов в эту форму. Затем я открываю новое окно с указанным именем и отправляю форму. Код выглядит так:
function submitToWindow(url, nameValuePairs) {
var form = document.createElement('form');
form.setAttribute('action', url);
form.setAttribute('target', 'newWindow');
form.setAttribute('method', 'POST');
for (i=0; i < nameValuePairs.length; i++) {
var nameValue = nameValuePairs[i].split('=');
var input = $('<input name="' + nameValue[0] + '" type="hidden" value="' + nameValue[1] + '"/>');
form.appendChild(input[0]);
}
document.body.appendChild(form);
window.open('http://fakeurl.com', 'newWindow');
form.submit();
}
Я создаю скрытые элементы ввода с помощью jQuery для кросс-браузерной совместимости, поскольку IE8, похоже, не нравится, когда вы вызываете blah.setAttribute ('name', 'value'); Превращает этот атрибут «name» в «submitName». Что вызывает проблемы при отправке формы.
Это прекрасно работает в FF и даже в IE8, когда нет большого количества скрытых вводов, которые необходимо создать. Однако, когда мы получаем около 150 скрытых элементов ввода, в IE8 ничего не происходит. Я не получаю никаких ошибок скрипта или чего-то еще, это как если бы щелчок по ссылке на карту был проигнорирован. Я предполагаю, что там есть какая-то поломка.
У кого-нибудь есть предложения, как сделать это лучше?