Возможно, вы захотите попробовать добавить форму, используя loginIFrame.contentWindow.document
вместо loginIFrame.appendChild
.
Возможно, вам также понадобится добавить форму после добавления iframe на страницу, поскольку свойство contentWindow
будет недоступно.
Я могу ошибаться, но я почти уверен, что форма не добавляется в iframe, потому что вы используете appendChild
. Я действительно не думаю, что вы можете манипулировать этим, так как он будет загружать URL, который вы говорите, чтобы загрузить (т.е. about: blank).
Редактировать: Вы также можете добавить loginForm.setAttribute("target", "loginFrame");
Вот что я тестировал, и он отлично работает:
loginIFrame = document.createElement('iframe');
loginIFrame.src = "about:blank";
loginIFrame.style.top = "0px";
loginIFrame.style.position='fixed';
loginIFrame.style.display = 'block';
loginIFrame.style.zIndex = 100;
loginIFrame.style.border = "solid #48D236 10px";
loginIFrame.height = "100px";
loginIFrame.width = "100%";
loginIFrame.style.border = 0;
loginIFrame.id = "loginFrame";
loginIFrame.name = "loginFrame";
document.body.appendChild(loginIFrame);
var idocument = loginIFrame.contentWindow.document;
loginForm = idocument.createElement("form");
loginForm.setAttribute("target", "loginFrame");
loginForm.setAttribute("method","Post");
loginForm.setAttribute("action","http://devserver:8000/action/");
parameters = {};
parameters['url'] = parent.window.location;
for(var key in parameters)
{
var hiddenField = idocument.createElement("input");
hiddenField.setAttribute('type',"hidden");
hiddenField.setAttribute('name',key);
hiddenField.setAttribute('value',parameters[key]);
loginForm.appendChild(hiddenField);
}
loginIFrame.appendChild(loginForm);
loginForm.submit();