2014-10-31 2 views
5

Элементы HTML принадлежат content cagetories. Для моей задачи я должен убедиться, что я не размещаю узлы интерактивного контента.Есть ли простой способ определить категорию контента элемента HTML?

В настоящее время я могу пересекать родителей узла, чтобы убедиться, что ни один из них не имеет тип <a>, <button>, <details>, <embed>, <iframe>, <keygen>, <label>, <select>, and <textarea>. Все эти элементы являются частью категории «Интерактивный контент».

Другие типы также могут быть интерактивными.

  • <audio>, если атрибут управления присутствует
  • <img>, если атрибут usemap присутствует
  • <input>, если атрибут типа не в скрытом состоянии
  • <menu>, если атрибут типа в состоянии панели инструментов
  • <object>, если присутствует атрибут usemap
  • <video>, если атрибут управления присутствует

Кроме того, любой элемент с атрибутом tabindexis considered interactive.

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

+2

Я не думаю, что есть автоматический способ. Что вы делаете, это требует, чтобы вы это знали? Похоже, что это в основном то, над чем должны работать разработчики браузеров, а не программисты приложений. Единственные не-браузерные приложения, о которых я могу думать, должны знать, это HTML-валидаторы. – Barmar

+1

@Barmar Я работаю над ошибкой в ​​приложении, которое связано с вложенными тегами ''. Я, возможно, зашел слишком далеко вниз по кроличьей норе ... – hughes

+3

@ JakeParis как так? ОП сказал: «Есть ли простой способ ...», подразумевая, что есть трудный путь, который они уже пробовали. И для моего любопытства я хотел бы посмотреть, что они попробовали. Еще одна причина, по которой я сказал это и не поставил вопрос, как это делают большинство людей, когда они говорят это. – Adjit

ответ

4

Нет, в DOM нет ничего для классификации элементов таким образом. Классификации были сделаны только в спецификации HTML5. Существует несколько старых классификаций, которые отражены в DOM, такие как классификация полей формы по их типу, с свойством type, и вы можете косвенно находить некоторые классификации в соответствии с правилами в том смысле, что разные элементы имеют разные display Значение свойства в настройках стиля. Но все эти современные классификации должны быть реализованы в вашем коде, используя списки имен элементов. Вы можете это увидеть, очень внимательно изучив определения DOM в HTML5 и узнав, что они не охватывают классификации.

Смежные вопросы