IE innerHTML начать с пользовательских тегов - PullRequest
1 голос
/ 18 ноября 2011

В IE, когда я устанавливаю divHTML как:

<abc>1<abc>

innerHTML будет преобразован в:

 1</ABC>

потому что 'abc' - это пользовательский тег. Но если я установлю:

1<abc>2</abc>

innerHTML сохранит тег 'abc', поэтому innerHTML:

1<ABC>2</ABC>

Запросите описание поведения.

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

... Понятно. Вы задаетесь вопросом, почему он удаляет открывающий тег, когда вы устанавливаете innerHTML элемента в 1, и он сохраняет его, когда вы добавляете innerHTML к числу ...

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

попробуйте это, если вы используете jQuery - вместо того, чтобы делать что-то вроде

$('#some_element').html('<abc>1</abc>'); // equal to document.getElementById('some_element').innerHTML = '<abc>1</abc>';

1008 * попробовать *

(function(){if(!/*@cc_on!@*/0)return;var e = "abc,other_custom_tags".split(',');for(var i=0;i<e.length;i++){document.createElement(e[i])}})(); // add the custom tag

var elem = $('<abc>');
elem.html('1');
$('#some_element').html(elem);

и объявите abc как допустимый тег в вашем css:

abc{
    display:block;
}

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

0 голосов
/ 18 ноября 2011

Поведение свойства innerHTML не стандартизировано (хотя в HTML5 была предпринята некоторая попытка).В разных браузерах это реализовано по-разному.

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