AlexSam, меня совершенно не смущают приведённые Вами типы ссылок, я веб-разработкой занимаюсь уже 7 лет, но вот ссылок, оформленных в Common Internet Scheme Syntax нотации я не видел ни разу.
Более того, есть RFC 3986 (http://tools.ietf.org/html/rfc3986#section-3.1), который, я уверен, читали многие, и который является обновлением для RFC 1738. Так вот, в этом RFC сказано, что scheme обязательно должна указываться! И нет ни одного упоминания про Common Internet Scheme Syntax.
И то, что Bolk нашёл эту удобнейшую в некоторых случаях нотацию — его огромная заслуга.
Например, YUI предоставляет hosted js — то есть можно в своих проектах указывать прямой путь на них (http://developer.yahoo.com/yui/articles/hosting/), то есть Вы прямо указываете
Если бы YUI отдавало файлы по HTTPS, можно было бы смело пользоваться следующим кодом:
<script type="text/javascript" src="//yui.yahooapis.com/2.7.0/build/yahoo/yahoo-min.js"></script>
и он подключал бы YUI и на страницах, доступных по HTTP, и по HTTPS.
Такая же история с картинками или CSS/JS, которые Вы решаете отдавать с другого узла (например для распределения нагрузки).
я думал об этом варианте, и он мне не понравился — показалось, что слово «родная» как-то к UA малоприменимо. Однако прочитал Вашу ссылку, и тут же вспомнил, что часто используются словосочетания вроде «родные динамики», «родные запчасти» и проч.
Так что спасибо за комментарий!
Статью поправил.
Друзья! Когда я редактировал статью, я нажал «публиковать» вместо «сохранить», в результате чего статья снова появилась на первой странице блога javascript. Прошу прощения!
Простите за корявое слово, не смог подобрать хороший перевод для native support, посмотрел в интернете — вроде много где встречается употребление, решил использовать.
по поводу абстракции: мне думается, селекторы — это лишь способ поиска (или, если хотите, указания) элементов в DOM'е, и CSS использует именно этот метод для навешивания стилей на элементы.
Посмотрите, что нам говорит спецификация Selectors (жирным выделил я):
Selectors are patterns that match against elements in a tree. Selectors have been optimized for use with HTML and XML, and are designed to be usable in performance-critical code.
CSS (Cascading Style Sheets) is a language for describing the rendering of HTML and XML documents on screen, on paper, in speech, etc. CSS uses Selectors for binding style properties to elements in the document. … These expressions can also be used, for instance, to select a set of elements, or a single element from a set of elements, by evaluating the expression across all the elements in a subtree.
STTS (Simple Tree Transformation Sheets), a language for transforming XML trees, uses this mechanism.
Selectors, which are widely used in CSS, are patterns that match against elements in a tree structure
При этом Selectors API ссылается именно на спецификацию Selectors!
Очевидно, что селекторы выделяют в отдельную сущность — метод поиска элементов в дереве. Ещё раз отмечу — не слияние поведения и стиля, но логичное выделение удобного метода поиска элементов в DOM'е в отдельную сущность.
Но не стоит забывать, что он использует найденные документы только лишь для задания их стиля (мелкософтных expressions не было в начальной версии CSS) в отрыве от их поведения.
Вот именно что в спецификации Selectors этот отрыв сознательно сделали.
P.S. expressions используется только в правилах CSS, в селекторах никогда не использовался.
Я согласен с Вами в том, что полноценно использовать Selectors API получится не скоро. Однако знать принцип, как мне кажется, необходимо, к тому же, большинство js-фреймворков умеют эмулировать Selectors API (и большинство из них уже в ближайшее время будет знать, какие браузеры реализуют Selectors API, а какие — нет, и, соответственно, будут либо эмулировать поддержку, либо отдавать её на откуп браузеру).
Я понимаю, о чём Вы, однако, как мне кажется, необходимо признать, что CSS и JS уже и так взаимодействуют очень активно.
К тому же, когда браузер парсит CSS, он ищет в DOM'е элементы, совпадающие с заданными селекторами. Так тут просто нам этот же функционал дали в JS. Если браузер не поддерживает JS, то у него просто не будут работать скрипты. Если браузер не поддерживает какой-либо селектор CSS, он просто не вернёт элементов по запросу querySelector/querySelectorAll.
Более того, есть RFC 3986 (http://tools.ietf.org/html/rfc3986#section-3.1), который, я уверен, читали многие, и который является обновлением для RFC 1738. Так вот, в этом RFC сказано, что scheme обязательно должна указываться! И нет ни одного упоминания про Common Internet Scheme Syntax.
И то, что Bolk нашёл эту удобнейшую в некоторых случаях нотацию — его огромная заслуга.
Например, YUI предоставляет hosted js — то есть можно в своих проектах указывать прямой путь на них (http://developer.yahoo.com/yui/articles/hosting/), то есть Вы прямо указываете
<script type="text/javascript" src="http://yui.yahooapis.com/2.7.0/build/yahoo/yahoo-min.js"></script>
в своём проекте.
Если бы YUI отдавало файлы по HTTPS, можно было бы смело пользоваться следующим кодом:
<script type="text/javascript" src="//yui.yahooapis.com/2.7.0/build/yahoo/yahoo-min.js"></script>
и он подключал бы YUI и на страницах, доступных по HTTP, и по HTTPS.
Такая же история с картинками или CSS/JS, которые Вы решаете отдавать с другого узла (например для распределения нагрузки).
Так что спасибо за комментарий!
Статью поправил.
Спасибо большое за то, что указали!
по поводу абстракции: мне думается, селекторы — это лишь способ поиска (или, если хотите, указания) элементов в DOM'е, и CSS использует именно этот метод для навешивания стилей на элементы.
Посмотрите, что нам говорит спецификация Selectors (жирным выделил я):
То же самое нам говорит спецификация Selectors API:
При этом Selectors API ссылается именно на спецификацию Selectors!
Очевидно, что селекторы выделяют в отдельную сущность — метод поиска элементов в дереве. Ещё раз отмечу — не слияние поведения и стиля, но логичное выделение удобного метода поиска элементов в DOM'е в отдельную сущность.
Вот именно что в спецификации Selectors этот отрыв сознательно сделали.
P.S. expressions используется только в правилах CSS, в селекторах никогда не использовался.
К тому же, когда браузер парсит CSS, он ищет в DOM'е элементы, совпадающие с заданными селекторами. Так тут просто нам этот же функционал дали в JS. Если браузер не поддерживает JS, то у него просто не будут работать скрипты. Если браузер не поддерживает какой-либо селектор CSS, он просто не вернёт элементов по запросу querySelector/querySelectorAll.