Сообщение от danik.js
|
Да ладно? Это почему? Если не радуют задержки на лишний http-запрос стиля, то объединяй все стили в один файл.
|
Напротив - я как раз хочу максимально разделить css. Дело в том, что прописанные в целевом css стили понадобятся только на некоторых страницах, причем будут востребованы только незначительной долей посетителей - зачем включать их в общий файл? Насчет задержек - они не волнуют, все равно css кэшируется браузером, а запрос из js обслуживается уж никак не быстрее, чем сгенерированный браузером на основе тега style. Цель - именно избавится от необходимости прописывать этот тег. Фишка в том, что стили в этом css применяются исключительно для элементов, сгенерированных одним конкретным js, тогда зачем прописывать в html и script и link, если можно подгрузить css-файл из скрипта?
Сообщение от BETEPAH
|
сами же ответили на свой вопрос. Прописывать относительный путь.
|
Так относительный путь будет искать файл относительно не js-файла, а текущего документа... Предположим, есть файлы (путь от корня сайта) /cmf/js/plugin1/plugin.js и /cmf/js/plugin1/plugin.css. Можно загрузить css, указав путь /cmf/js/plugin1/plugin.css, однако на других проектах файлы могут лежать не в /cmf/js/plugin1/, а, например, в /engine/js/plugin1/ или в /other/core/js/plugin1/. А если мы укажем просто имя файла (поскольку он лежит в одной папке с js), то браузер будет считать, что путь указан относительно текущего html-документа и будет пытаться грузить его как /plugin.css или, например, /news/plugin.css - в зависимости от того, на какой странице находится пользователь.
Сообщение от Deff
|
Выделить установку css в отдельную функцию, с прописанным уникальным атрибутом в теге style или link, дабы проверять нужна ли сама установка, или тег со стилем уже стоит, эту проверку делать в самой функции.
Тогда просто вызываете функцию в нужных вам скриптах
|
Цель как раз в том, чтобы не прописывать этот css в html вообще - пусть он грузится только по инициативе js...
Сообщение от danik.js
|
RequireJS вроде умеет css подгружать. Но я считаю не нужно этого делать. Юзай RequireJS для асинхронной загрузки и управлением зависимостями между модулями.
|
Ну, просто подгружать стили и я умею, вот функция:
function addCss(path) {
var el = document.createElement('link');
el.rel = 'stylesheet';
el.href = path;
el.type = 'text/css';
var head1 = document.getElementsByTagName('head');
head1[0].appendChild(el);
}
Вопрос - как вычислить параметр, с которым ее вызывать, с учетом того, что css лежит в той же папке, что и js-файл, из которого она будет вызвана?
Т.е. в файле, например, /cmf/js/plugin1/plugin.js осуществляется вызов этой функции, нужно, чтобы js знал, по какому пути он лежит, чтобы потом на его основе вычислить путь к целевому css...
Неужели совсем нет никакого способа определить, откуда запущен конкретный код?