IE <= 8 удаляет тег <form>при получении от AJAX - PullRequest
9 голосов
/ 07 августа 2011

Я делаю вызов AJAX POST, чтобы получить немного HTML. Я беру этот HTML и вставляю его в DOM. В каждом браузере все работает отлично, за исключением IE <= 8. Похоже, что IE анализирует входящий HTML, поскольку, когда я регистрирую его, чтобы утешить / предупредить его, теги отображаются заглавными буквами. </p>

Строка, которую она удаляет:

<form class="uniForm" enctype="multipart/form-data" action="/profile/editprofile/" method="post">

Очень странно, потому что есть конечный тег, но нет стартового. Вызов является стандартным JQuery POST ($ .post ()).

UPDATE:

Закончилось: сдаться и поместить его во встроенную текстовую область и повторно ввести в DOM:

<!--[if lt IE 9]>
<textarea class="ieHackTextArea">
<!--[if lt IE 9]>
<![endif]-->

... где-то еще ...

if ($.browser.msie && parseFloat($.browser.version) < 9) {
    ui.panel.innerHTML = $(".ieHackTextArea").val(); // jQuery injection doesn't work
}

Ответы [ 5 ]

12 голосов
/ 11 февраля 2012

Я столкнулся с точно такой же проблемой сегодня и сумел ее исправить, вставив пустой прямо перед <form>, что каким-то образом останавливает IE8 (не проверял в других версиях) удаление <form>.

1 голос
/ 08 августа 2011

Вы можете попробовать обернуть всю форму в <div>, чтобы проверить, работает ли она лучше.

У меня возникла та же проблема с <input> объектом, и это было мое решение, чтобы убедиться, что оно будет нормально работать в IE8.

0 голосов
/ 05 февраля 2015

используйте navigator.userAgent внутри вашего обработчика JavaScript, чтобы идентифицировать браузер и применить подходящую логику. Это просто сравнить с "CSS-хаком". Вы можете ссылаться здесь http://www.useragentstring.com/pages/Internet%20Explorer/

Пользовательский агент IE, скорее всего, будет нести строку MSIE (возможно, Miscrosoft internextExplorer: D)

В основном:

if(navigator.userAgent.indexOf('MSIE 7.0') > -1){
   /* Do watever suitable for IE7 here */ 
}else if(navigator.userAgent.indexOf('MSIE 8.0') >-1){
   /* Do watever suitable for IE8 here */ 
}else{
  /* The rest... */
}
0 голосов
/ 03 июля 2014

Решение быстрое и простое, просто удалите последнюю косую черту из атрибута action = "" (только в URL) тега формы.

Пример:

НЕПРАВИЛЬНО (IE)

<form action="http://mywebsite.com/something/">
</form>

ПРАВИЛЬНО

<form action="http://mywebsite.com/something">
</form>

Удалить косую черту только в конце действия формы = "".

0 голосов
/ 06 августа 2012

У меня точно такой же сценарий и та же проблема с небольшим поворотом. Я получаю входной тип = скрытый тег, а также тег формы. Я не нашел причину, почему это происходит. Кто-нибудь нашел что-то новое по этой проблеме с августа прошлого года?

Также я попытался обернуть форму в тег div, и ничего не изменилось. Если я напишу какой-нибудь текст или $ nbsp; в строке над тегом формы форма будет отображаться.

Могу также подтвердить, что эта проблема есть и в IE7 (если это имеет значение).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...