#javascript #css
#javascript #css
Вопрос:
Этот скрипт динамически определяет все возможные свойства стиля, поддерживаемые элементом…
for (i in document.getElementById('body').style)
{
document.getElementById('q').value = document.getElementById('q').value ', ' i;
}
Мой вопрос в том, как мы динамически обнаруживаем все возможные value
значения, которые property
поддерживает данный параметр? Под динамическим я явно подразумеваю не создание массива с возможными значениями (статическими) и итерацию по массиву с использованием CSS.supports
.
Комментарии:
1. Не то чтобы я мог помочь, но просто для пояснения, хотите ли вы также включить поддерживаемые свойства с префиксом браузера?
2. если вы имеете в виду, что заранее знаете какое-то имя свойства, просто хотите проверить, поддерживается ли оно, поэтому вы можете просто использовать
in
оператор likeif("propetyName" in styleObject){...}
styleObject
wherefore — это объект, на который ссылаетсяstyle
свойство (объекта элемента DOM).3. CSS.supports (
CSS.supports('position','absolute')
) сообщит вам, поддерживается ли значение, но вам придется добавить к нему несколько строк…4. @NickDugger Да, включая значения с префиксами.
Ответ №1:
Я не уверен, что это возможно, поскольку некоторые из них бесконечны. Вы действительно хотите посмотреть, какие классы значений являются приемлемыми.
Когда значением свойства является число, подобное top
принимаемому length
, которое может быть in, cm, mm, pt, pc, px, ex, em, percentage, auto, or inherit
В случае content
, если он принимает другой диапазон значений normal, none, string's, uri's, counter, attr(attrName), open-quote, close-quote, no-open-quote, no-close-quote, inherit
(и, возможно, он ищет комбинацию этих вещей)
(src:w3.org )
Каждое свойство, описанное в документе w3, имеет различный набор типов, которые оно принимает.
Я не знаю, как заставить javascript выдавать такую схему / dtd, но вы могли бы составить исчерпывающий список потенциальных значений, представляющих классы значений, а затем протестировать каждое из них, используя что-то вроде CSS.supports(propertyName, value);