Если ваш CSS является само- прошел, вы можете:
- Получить список всех CSS блоков
- Отфильтровывать CSS блоки, которые не содержат
:first-letter
в селектор блока
- It прокрутите список оставшихся блоков CSS и запустите
matchesSelector()
с целевым элементом в качестве приемника и селектором текущего блока CSS в качестве аргумента.
- Если
matchesSelector()
возвращает true
, то действующие правила блока CSS влияют на первую букву целевого элемента.
- В противном случае переходите к следующему CSS блока в списке
Если CSS не резидентных и CDN не отправляет заголовки CORS, то вы не можете прочитать исходный файл CSS из-за проблем с конфиденциальностью, и это невозможно.
Я также не рассмотрел, как правило, каскадирование из алгоритма. Еще один удар по дороге - выяснить, какие псевдоселекторы влияют на matchesSelector
ложным способом.
Как считают:
p.webkitMatchesSelector("p:first-letter") //false
Так можно было бы удалить pseudos как :first-letter
из строки, прежде чем пытаться соответствовать как они не имеют никакого отношения (но pseudos как :nth-child
не потому, что они действительно влияют на соответствие).
Demo http://jsfiddle.net/PBuzb/5/ (имейте в виду, что проблемы я уже упоминал, не обрабатываются очень хорошо здесь) (база кода первоначально Давка)
Почему не разрешается читать источник CSS в поперечном происхождения ситуация?
Причина, по которой вы можете показывать изображения, запускать css/js и т. Д.из других доменов, НО абсолютно не получить доступ к их данным каким-либо образом - это конфиденциальность.
Корпус проще всего сделать для изображений. Предположим, что я вошел в систему на facebook, а facebook использует url для частной фотографии, например http://facebook.com/myprofile.png. Теперь я иду на evil.com, а evil.com может загружать изображение, потому что я вошел в систему на facebook, , чтобы facebook предоставил им это изображение. Как правило, они не могут получить доступ к изображению или украсть его в любом случае, но если мы включили доступ к данным перекрестного происхождения , они могли бы теперь получить доступ к моей личной фотографии и распространить ее.
То же самое может произойти в CSS, может быть пользовательский CSS, созданный сервером facebook, который содержит идентификаторы пользователей моих личных друзей . Они не настолько частные больше, если любой веб-сайт, на который я могу пойти, может просто ссылаться на этот css и начать читать его.
И да, основная проблема заключается в том, как браузеры отправляют файлы cookie с запросом на перекрестный поиск, если браузер не отправил файлы cookie при запросе изображений facebook/css с сайта evil.com, то facebook не смог ответить специфичным для пользователя css или мои личные фотографии, потому что печенья были необходимы, чтобы узнать меня.
Теперь представьте, если браузеры не отправили файлы cookie. Evil.com все равно мог получить доступ к данным интрасети таким образом, потому что мой браузер имеет доступ к интрасети. Возможность показать http://intranet/Myboss.jpg
как изображение на сайте evil.com - это не проблема, но Evil.com может читать данные изображения и, таким образом, иметь возможность копировать и распространять его, является проблемой.
Почему бы не просто проверить, если '.initial' класс применяется к пункту? Если оно применяется, то вы знаете, что применяется стиль псевдо-элемента ': first-letter' - если есть первая буква, которая (и браузер поддерживает': first-letter'). – crush
Потому что это должно быть общее решение в качестве обходного пути для ошибки в chrome и должно использоваться в рамках, поэтому я не знаю названия стиля. –
Мне было бы интересно узнать об ошибке Chrome. У вас есть ссылка на отчет об ошибке Chrome, или jsfiddle, который может его демо? Может ли быть какой-то другой способ, чем то, как вы пытаетесь? Кроме того, если это известная ошибка, есть ли вероятность, что они могут исправить ее в следующей версии? (вы проверяли, есть ли ошибка в канарейской версии или ночных клубах?) – Spudley