innerHTML удаляет закрывающую косую черту из тега изображения

Это очень странно. Вот функция быстрого тестирования:

function test_function(){
    code = '<img src="http://www.myimage.com/img.jpg" alt="image" />';
    alert(code);
    document.getElementById('test').innerHTML = code;
    alert(document.getElementById('test').innerHTML);
}

Выполнение приведенного выше кода покажет /> в первом предупреждении, но второе предупреждение не показывает, оно показывает только >. Таким образом, похоже, что применение к .innerHTML удаляет косую черту. Любые идеи, как предотвратить это? Мне нужна косая черта для проверки.


person David    schedule 22.11.2010    source источник
comment
какой тип документа вы используете?   -  person Dror    schedule 22.11.2010
comment
С какими браузерами вы столкнулись с этим?   -  person JAL    schedule 22.11.2010
comment
Если браузер удалит косую черту, скорее всего, она не потребуется в этом типе документа.   -  person Pekka    schedule 22.11.2010
comment
‹!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd  -  person David    schedule 22.11.2010
comment
Но обслуживаете ли вы свою веб-страницу как application/xhtml+xml?   -  person Marcel Korpel    schedule 22.11.2010
comment
Я полагаю, вы имеете в виду следующее: ‹meta http-equiv=Content-Type content=text/html; кодировка = iso-8859-1 /›   -  person David    schedule 22.11.2010
comment
Нет, я имел в виду HTTP-заголовок.   -  person Marcel Korpel    schedule 22.11.2010
comment
правильно, он проходит как text/html   -  person David    schedule 22.11.2010
comment
В этом случае браузеры все равно анализируют вашу страницу как HTML.   -  person Tim Down    schedule 22.11.2010


Ответы (1)


Второе предупреждение просто показывает вам, что браузер использует в качестве внутреннего представления вашего элемента изображения. Вам не нужна косая черта для проверки, так как проверка всегда касается источника вашей страницы, валидаторы не выполняют JavaScript, который динамически добавляет элементы в DOM.

На самом деле, большинство браузеров обрабатывают XHTML так же, как и HTML, а не как XML-представление вашего документа. Только когда вы отправляете документ XHTML с типом MIME application/xhtml+xml, некоторые браузеры будут отображать вашу страницу с помощью синтаксического анализатора XML.

См. также статью Яна Хиксона.

person Marcel Korpel    schedule 22.11.2010
comment
Это все хорошо, если только вы не используете такие вещи, как innerHTML, для сохранения исходного кода страницы в редакторе страниц ajax. - person David; 22.11.2010
comment
Правильно, если я использую этот мим, он будет работать в каком-то браузере. Мне нужно что-то надежное, и я не могу найти ничего в Интернете, кроме формы с использованием этого пантомимы. - person David; 22.11.2010
comment
@David, нельзя ли здесь переключиться на HTML 5? Гораздо проще, если вы не используете самозакрывающиеся теги< /а>. - person Marcel Korpel; 22.11.2010