Я открываю новое окно через JavaScript POST в ответ на щелчок пользователя во флэш-приложении.Пользователь может закрыть новое окно и захотеть снова открыть его, снова нажав кнопку на первой странице.Так как мне нужно передать несколько больших аргументов на вторую страницу, я должен сделать POST, GET не будет работать.До сих пор у меня открывается вторая страница, и она ведет себя правильно в Chrome, FF и IE при первом нажатии кнопки.Однако в Chrome (он работает в IE и FF) при втором нажатии кнопки POST игнорируется, а новое окно не открывается.
Вот функция, которую я использую для выполнения POST.Я убедился, что он проходит весь путь до строки form.submit () в Chrome со всеми теми же параметрами и без уведомлений об ошибках, но новое окно по-прежнему не открывается.
function post_to_url(path, paramString) {
var params = paramString.split("|");
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", path);
form.setAttribute("target", "_blank");
for (var i=0; i<params.length; i++) {
var hiddenField = document.createElement("input");
var param = params[i].split(":");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", param[0]);
hiddenField.setAttribute("value", param[1]);
form.appendChild(hiddenField);
}
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
}
Любые идеи о том, как это можно изменить, чтобы заставить его работать и в Chrome?
Обновление: похоже, что форма не удалена из DOM в Chrome.Я не уверен, является ли это проблемой или нет, но ее следует удалить независимо.
Мы также заметили, что хотя 2-е POST в Chrome в Linux и Windows не проходят, они выполняются на Mac.,Тем не менее, даже на Mac форма не удаляется из DOM.
Еще одно обновление: подобное изменение кода корректно удаляет форму из DOM, но не решает проблему POST.
function post_to_url(path, paramString) {
var postform = document.getElementById("postform");
if (postform != null)
document.body.removeChild(postform);
var params = paramString.split("|");
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", path);
form.setAttribute("target", "_blank");
form.id = "postform";
for (var i=0; i<params.length; i++) {
var hiddenField = document.createElement("input");
var param = params[i].split(":");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", param[0]);
hiddenField.setAttribute("value", param[1]);
form.appendChild(hiddenField);
}
document.body.appendChild(form);
form.submit();
var postform = document.getElementById("postform");
document.body.removeChild(postform);
}