Почему я не могу установить innerHTML для моего пользовательского HTML-тега в Internet Explorer?

#javascript #internet-explorer #innerhtml

#javascript #internet-explorer #innerhtml

Вопрос:

У меня проблема с IE и innerHTML. Пожалуйста, ознакомьтесь со следующим кодом.

 var h = document.getElementsByTagName("mytag");
h.item(0).tagName;
var d = document.body.innerHTML;
h.item(0).innerHTML = "<div id='' style='height:auto'><textarea id=''></textarea><br/><button id=''>Post</button></div>";
 

Пожалуйста, обратите внимание, что я меняю идентификаторы.

Приведенный выше код хорошо работает в Firefox, но не в IE.

  h.item(0).innerHTML = "<div id='' style='height:auto'><textarea id=''></textarea><br/><button id=''>Post</button></div>";
 

Эта строка вызывает у меня проблемы. mytag является пользовательским.

Я застрял здесь, пожалуйста, помогите.

Спасибо.

Комментарии:

1. IE не будет поддерживать пользовательские теги как элементы DOM, так что вам не повезло. Вам придется использовать допустимые HTML-теги, такие как <div> или <span> (или любой другой тег) вместо mytag .

2. Спасибо, но есть ли какой-либо способ сделать это?

3. Возможно, применив правильное namespace , как описано здесь , но я не уверен, что это тоже сработает.

4. Как я могу заставить других владельцев веб-сайтов использовать правильное пространство имен? код не для моего сайта, он работает как API.

5. Нет, вы не можете заставить их делать такие вещи.

Ответ №1:

mytag IE не распознает их, вам нужно будет создать их, чтобы IE знал, используя:

 document.createElement('mytag');
 

Или, в качестве альтернативы, используйте такие теги, как <div> , и т. Д

Комментарии:

1. var h = document.getElementsByTagName("mytag"); h= h.item(0).tagName;alert(h); — это работает хорошо, но я не могу установить его innerHTML.

Ответ №2:

используйте document.all.elementId.getElementsByTagName(param1)

Комментарии:

1. Это неправда. Это getElementById очень просто, единственная проблема со старой версией IE (7 и менее) заключается в том, что он также будет искать элемент с таким именем , но он также вернет элемент с этим идентификатором просто отлично. Смотрите более подробную информацию здесь

2. Хорошо, я неправильно ограничил его, спасибо за ваш полезный совет.