Я нашел решение, которое работает с менеджером паролей Firefox.В зависимости от того, почему вы загружаете форму динамически, мое решение может вам помочь, а может и не помочь.(Подробнее об этом ниже.)
Сначала поместите невидимую форму (я использовал встроенный стиль «display: none») на странице, которая использует тот же метод и действие и содержит поля с одинаковыми именами.,Вы можете поместить это ниже div, который в конечном итоге будет содержать реальную форму:
<div id="container"></div>
<div id="fake-form" style="display: none">
<form action="index.php" method="post">
<input type="text" name='nombre' class='nombre'/>
<input type="password" name='pass' class='pass' />
</form>
</div>
Затем в вашем JavaScript, после загрузки содержимого реальной формы, скопируйте значения из фальшивой формы ипоместите их в реальное:
<script type="text/javascript">
$(function() {
$("#container").load("/path/file.php?what=login_form", function() {
var fakeForm = $("#fake-form");
$("#nombre").val(fakeForm.find(".nombre").val());
$("#pass").val(fakeForm.find(".pass").val());
});
});
</script>
Тем не менее, если вы потратите столько усилий, чтобы поместить форму на страницу до того, как вы динамически загрузите реальную форму, то почему бы просто не удалить эту последнююшаг и есть форма на странице для начала?:-) Предположительно у вас есть хорошая причина для этого, хотя.Может быть, форма, поступающая с сервера, содержит уникальную информацию о стиле, или динамические сообщения об ошибках рядом с полями, или имена полей i18n?
Однако, если форма, которую вы извлекаете с сервера, имеет действие, которое изменяется длядругие пользователи, тогда мой трюк не сработает, потому что вы должны заранее знать действие при создании скрытой формы.
Если это так, то, возможно, вы могли бы попробовать мой трюк в обратном порядке, скрыть «реальную форму», которую вы загружаете с сервера, и отобразить поддельную форму для пользователя.Поддельная форма может публиковаться на несуществующий URL, но затем вы можете использовать JavaScript, чтобы перехватить отправку «поддельной формы», скопировать имя пользователя и пароль в невидимую «реальную форму», вызвать submit в реальной форме иверните false, чтобы предотвратить отправку исходной формы.
Обновление: Подумав об этом немного больше, я не думаю, что мое второе решение будет работать, потому что менеджеры паролей почти наверняка связывают имя пользователя и пароль с окончательным URL-адресом, который вына самом деле отправляйте данные, а не начальный URL-адрес действия в форме, которую вы бы изначально притворили для отправки.В любом случае, надеюсь, мое первое решение будет адекватным тому, что вы делаете.