Django, Javascript: форма, введенная в DOM через javascript innerHtml, приводит к сбою вкладки Google Chrome при отправке. Работает в IE
Я написал букмарклет, который получает форму Django и вставляет ее в Dom с помощью innerHtml нового элемента div, созданного с помощью javascript и добавленного в тело существующего HTML-документа. Первым представлением является запрос ajax (работает нормально), если Django отклонил форму из-за неизвестного пользователя, функция submit не связана с ajax и повторно отправляется без ajax во всплывающее окно для аутентификации пользователя без CORS. Процесс работает безупречно в IE, но при нажатии кнопки «Отправить» происходит сбой вкладки Chrome.
Тесты: я подумал, что, возможно, проблема была в первоначальном представлении Ajax. Тем не менее, если я использую тот же процесс без AJAX при внедрении, отправить также не удается. Если я скопирую html-код из браузера после того, как моя инъекция будет завершена, и создам новый html-документ, то открою его в chrome, все работает нормально. Кроме того, если я удаляю div, содержащий поля формы, до внедрения, кнопка отправки работает. Это наводит меня на мысль, что это как-то связано с введением формы после загрузки Dom на существующей странице. Есть ли способ перезагрузить Dom без обновления страницы или заставить innerHtml правильно зарегистрироваться в Dom при внедрении?
Никаких ошибок консоли, просто ооо, хватит! Somethng пошло не так при отображении этой веб-страницы.
Чтобы повторить проблему, выполните следующие действия: (Я нахожусь на Windows 8 с версией Chrome 23.0.1271.64 m)
(шаг 1) перейти к URL-адресу изображения: itsblackcurrent.com/wp-content/uploads/2012/07/what-hi.png
(шаг 2) перейдите в консоль Chrome и введите следующий код:
o = document.createElement("div");
o.setAttribute("id", "overlay");
o.innerHTML = 'New PinURLor UploadDescriptionTagsSubmit<a id="cancel" onclick="removeOverlay()" data-toggle="modal" class="btn">Cancel</a>';
document.body.appendChild(o);
(шаг 3) Нажмите «Отправить» и увидите сбой Chrome!
(шаг 4) Если точно такой же код загружен до загрузки DOM, он работает. Вставьте следующее в новый текстовый документ и сохраните как .html.
Copy and paste all the code from step 2 here
(шаг 5) Откройте файл .html с помощью Chrome и отправить не будет сбой.