Проблема с "передачей" стилей
Может, кто-то уже решал подобную проблему:
Данное (всё смоделировано специально, как иллюстрация):
1. Есть пользовательская страница (http://www.myreal.net/example/index.html), со своими стилями;
2. Есть промежуточная страница (страница проверки) сервиса, которая вызывается методом form с первой страницы (http://www.myreal.net/SendMail.aspx -- не откроется простым переходом, а только в случае наличия у пользователя первой страницы и домена (второго уровня) на сервере) со своими (одинаковыми для всех) стилями;
3. Есть завершающая страница, находящаяся там же, где и первая -- на хосте пользователя (http://www.myreal.net/example/sendok.html) с теми же, пользовательскими стилями, что и первая;
Требуется:
Передать стили первой (и третьей) страницы -- второй. Причем, не известно какие стили у пользователей, не известно сколько пользователей.
Методы, вроде background:none; не работают.
Из-за того, что не известно, какие стили у пользователей -- решение должно быть в "руках" у пользователя. Шаблоны (разнообразные) тоже не подходят -- сильно грузят сервер.
С уважением, Valery
то потом при формирование второй страницы эти урлы и юзать.
ЗЫ если пользователь в своем документе юзал что-то вроде <div style="align: center;">рыба</div>, а скорее всего таких будет большинство,
то из его страницы тебе и это нужно извлечь, а иначе передача стилей бесполезна.
А при обращение к стр. 2, можно передать url пользовательских стилей или нет? Если да,
то потом при формирование второй страницы эти урлы и юзать.
ЗЫ если пользователь в своем документе юзал что-то вроде <div style="align: center;">рыба</div>, а скорее всего таких будет большинство,
то из его страницы тебе и это нужно извлечь, а иначе передача стилей бесполезна.
А вообще в css есть команда import("file.css") ; если тбе это поможет.
А вообще в css есть команда import("file.css") ; если тбе это поможет.
Ну, вообще-то это не команда, а at-правило (at-ruler) - @import "style.css"; или @import "http://your.host.net/style.css";
Ну, вообще-то это не команда, а at-правило (at-ruler) - @import "style.css"; или @import "http://your.host.net/style.css";
Да правило, :) , спасибо за замечание.
А вообще в css есть команда import("file.css") ; если тбе это поможет.
Я может, по-дурному описал проблему?
1. Есть юзер (я его не знаю) и не узнаю никогда. Сервис все юзают анонимно.
2. У юзера есть страница (как правило статика) и есть свои стили (о которых я тоже ничего не знаю). Мне он ничего не передаст.
3. Есть моя страница (о которой он знает) и если что-то сечёт в CSS, то ему необходимо что-то "подсунуть" на моей (динамической) странице, чтобы он смог использовать и получить на моей странице -- свои стили. Во, проблемка.
Соединение статики и динамики. Я специально дал беграунд чёрный, дабы была заметна разница. На динамике -- беграунд -- белый.
С уважением, Valery
А при обращение к стр. 2, можно передать url пользовательских стилей или нет? Если да,
то потом при формирование второй страницы эти урлы и юзать.
ЗЫ если пользователь в своем документе юзал что-то вроде <div style="align: center;">рыба</div>, а скорее всего таких будет большинство,
то из его страницы тебе и это нужно извлечь, а иначе передача стилей бесполезна.
Нельзя. Регистрации нет. Заставлять юзера вносить допинформацию об урле CSS -- непрактично. К тому же это утяжелит работу сервака. Он и так "серьезно" пашет над рассылкой почты.
Нельзя. Регистрации нет. Заставлять юзера вносить допинформацию об урле CSS -- непрактично. К тому же это утяжелит работу сервака. Он и так "серьезно" пашет над рассылкой почты.
А если время от времени проверять наличие у пользователей собственной таблицы стилей (например через cron в часы наименьшей загрузки сервера) и записывать их в базу?
А если время от времени проверять наличие у пользователей собственной таблицы стилей (например через cron в часы наименьшей загрузки сервера) и записывать их в базу?
У меня нет данных о пользователях. Это данное. Регистрации нет, данные все в зашифрованном виде. Я не знаю, кто из пользователей использует удалённую процедуру, логи не ведутся. ПОЛНАЯ анонимность. Я, просто НЕ МОГУ проверять, я не знаю ГДЕ и ЧТО проверять. Если вести логи, парсить данные, значит вся затея рассыпается -- можно добраться до данных юзеров и продать данные спамерам, посему на это мы не пойдём.
В этом и проблема :(
Я вот думаю, может xml подсунуть вместо формы, но тогда следует дать ещё один пример формы в связке xml-xslt, но юзеры разные, возьмут всё равно пример попроще: простую хтмл-вёрстку. Заставлять не можем.
Я ощущаю, что где-то есть какой-то хитрый ход с CSS, но, как собака -- сказать не могу :)
С уважением, Valery
P.S. Если какой-то вариант подскажете, я прямо по живому попробую, как в "За стеклом" :)
Просто css можно только влючить в документ (но ты не можешь определить url), а других ходов нет.
А просто обратиться по веб интерфейсу не льзя, нужна авторизация? А то можно было бы в конце концов прогой обращаться к странице, и анализировать ответный html код, смотреть стили.
Просто css можно только влючить в документ (но ты не можешь определить url), а других ходов нет.
Я, знаешь какую конструкцию испытывал:
Прописывал стили, которых не существует на второй странице, т.е. не определял в хидере css-файл, а в коде писал классы (т.е. те, которые на второй странице не определены).
Затем эти же классы прописывал в стилях первой страницы, в надежде на то, что есть родительские стили, вторая должна подхватить потоки, блоки, слои, цвета и... фиг. Я вот в каком направлении думаю, вдруг можно что-то вымутить.
С уважением, Valery
Я, знаешь какую конструкцию испытывал:
Прописывал стили, которых не существует на второй странице, т.е. не определял в хидере css-файл, а в коде писал классы (т.е. те, которые на второй странице не определены).
Затем эти же классы прописывал в стилях первой страницы, в надежде на то, что есть родительские стили, вторая должна подхватить потоки, блоки, слои, цвета и... фиг. Я вот в каком направлении думаю, вдруг можно что-то вымутить.
С уважением, Valery
А можешь html для примера выложить? Может просто в коде заморочки.
А можешь html для примера выложить? Может просто в коде заморочки.
Сейчас, я ещё одну тему попробую, потом (если ничего не выйдет) -- выложу.
А как тут выкладывать? Просто, копи-паст?
С уважением, Valery
Сейчас, я ещё одну тему попробую, потом (если ничего не выйдет) -- выложу.
Не вышло :(
Ладно, а кода с гулькин код (для иллюстрации).
1. Первая страница имеет код:
BODY {
background:#000000;
color:#ffffff;
}
2. Вторая страница не имеет в сss-файле раздела бади. Зато в коде (конечно же) имеет тэг <body>.
Идея была в том, что первая страница, со своими классами, является родительской по отношению ко второй, но... чуда не случилось.
Та же беда касается и конструкций чего-то_там.класс {и собственно все правила}.
С уважением, Valery
Не вышло :(
Ладно, а кода с гулькин код (для иллюстрации).
1. Первая страница имеет код:
BODY {
background:#000000;
color:#ffffff;
}
2. Вторая страница не имеет в сss-файле раздела бади. Зато в коде (конечно же) имеет тэг <body>.
Идея была в том, что первая страница, со своими классами, является родительской по отношению ко второй, но... чуда не случилось.
Та же беда касается и конструкций чего-то_там.класс {и собственно все правила}.
С уважением, Valery
Что бы наследование было, нужно явно указать от чего что наследуется, т.е.:
body чего-то_там.класс {и собственно все правила}
соответсвенно body должно быть описано раньше, чем начнет использоваться.
Даже если ты напишешь:
BODY {
background:#000000;
color:#ffffff;
}
, а юзер чей стиль грузиться после
p{color: red;}
то использоваться будет последний, он унаследует
background, но отменит старый цвет текста, сделает красным, так что такое совмещение может вообще изуродовать дизайн
Что бы наследование было, нужно явно указать от чего что наследуется, т.е.:
body чего-то_там.класс {и собственно все правила}
соответсвенно body должно быть описано раньше, чем начнет использоваться.
Даже если ты напишешь:
BODY {
background:#000000;
color:#ffffff;
}
, а юзер чей стиль грузиться после
p{color: red;}
то использоваться будет последний, он унаследует
background, но отменит старый цвет текста, сделает красным, так что такое совмещение может вообще изуродовать дизайн
Я так и делаю. у меня вообще стиль с правилами есть только для первой страницы, а на второй класс указан, но правила для класса не установлены. А можно более популярно?
Предположим у меня есть конструкция на первой странице p{color:red;}, а мне требуется на второй получить в p -- color:red, причём на второй странице я не использую никаких правил для стилей, но использую тэг
?
Причем, первая страница на одном урл, вторая на другом.
Да, с наступающими всех праздниками.
Valery
Я так и делаю. у меня вообще стиль с правилами есть только для первой страницы, а на второй класс указан, но правила для класса не установлены. А можно более популярно?
Предположим у меня есть конструкция на первой странице p{color:red;}, а мне требуется на второй получить в p -- color:red, причём на второй странице я не использую никаких правил для стилей, но использую тэг
?
Причем, первая страница на одном урл, вторая на другом.
Да, с наступающими всех праздниками.
Valery
Спасибо, тебя и Всех с праздником!
В css все последующие объявления отменяют предыдущие, если они им протворечат, т.е. объявив 2 раза p использоваться будет последнее, за одним исключением вариант использовать инструкцию !important;
Например:
1 файл css:
p {color: red !important}
2 файл css:
p {color: green;}
p.blue{color: blue;}
<p class="blue">рыба</p>
Так вот там где установлено !impotant и будет использоваться правило стилей, т.е. текст параграфа будет красным, нисмотря на то что последуещие ему противоречат. Но если продвинутый юзер поставит тоже !important, то будет использоваться последнее объявление, т.е.
1 файл css:
p {color: red !important}
2 файл css:
p {color: green !important}
p.blue{color: blue;}
<p class="blue">рыба</p>
Текст станет зеленым. Мой тебе совет, делать так и надеется что ни кто из пользователей ни знает об существовании !important или же отказаться от этой затеи вообще, иначе у шибко продвинутого юзера дизайн страницы слетит вообще.
P.S. А вообще попробуй загружать все наоборот сначала стили юзера, а потом твои, но в своих, на всякий случай, пропиши !important, везде, может что получится.
Если нет, то подумаем еще, задача странная, но интересная.
Спасибо, тебя и Всех с праздником!
В css все последующие объявления отменяют предыдущие, если они им протворечат, т.е. объявив 2 раза p использоваться будет последнее, за одним исключением вариант использовать инструкцию !important;
Например:
1 файл css:
p {color: red !important}
2 файл css:
p {color: green;}
p.blue{color: blue;}
<p class="blue">рыба</p>
Так вот там где установлено !impotant и будет использоваться правило стилей, т.е. текст параграфа будет красным, нисмотря на то что последуещие ему противоречат. Но если продвинутый юзер поставит тоже !important, то будет использоваться последнее объявление, т.е.
1 файл css:
p {color: red !important}
2 файл css:
p {color: green !important}
p.blue{color: blue;}
<p class="blue">рыба</p>
Текст станет зеленым. Мой тебе совет, делать так и надеется что ни кто из пользователей ни знает об существовании !important или же отказаться от этой затеи вообще, иначе у шибко продвинутого юзера дизайн страницы слетит вообще.
P.S. А вообще попробуй загружать все наоборот сначала стили юзера, а потом твои, но в своих, на всякий случай, пропиши !important, везде, может что получится.
Если нет, то подумаем еще, задача странная, но интересная.
Сейчас попробую, спасибо за участие :)
"Это тебе не C# и не ASP.NET -- это Великий и Могучий CSS" :)))
Сейчас попробую, спасибо за участие :)
"Это тебе не C# и не ASP.NET -- это Великий и Могучий CSS" :)))
Не работает, выглядит так:
1 страница (правила):
BODY {
background: #000000 !important;
color: #ffffff !important;
}
DIV.body {
background: #000000 !important;
color: #ffffff !important;
}
DIV.body_two {
background: #000000 !important;
color: #ffffff !important;
}
2. страница (правила):
BODY {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 11px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
}
DIV.body {
WIDTH: expression(((document.documentElement.clientWidth || document.body.clientWidth) < 800)? "800px" : "100%")
}
DIV.body_two {
min-width: 800px
}
Т.е., на второй странице вообще нет бэграунда и цвета шрифта, должно по идее использовать правила, установленные на первой, а не использует.
С уважением, Valery
Может ты в документ их не правильно включил, проверь, или выложи посмотреть.
:!!!: :!!!: Все работает , проверял в IE и FireFox.
Может ты в документ их не правильно включил, проверь, или выложи посмотреть.
Первая страница та же, что я указывал вначале (правлю по-живому, смотрю в Осле и Лисе -- результат один и тот же): http://www.myreal.net/example/index.html;
Её CSS: http://www.myreal.net/example/examples.css.
Вторая страница: http://www.myreal.net/SendMail.aspx, правильно откроется, если на первой чего-то напишешь в поля и нажмёшь пымпу [Далее];
Её CSS: http://www.myreal.net/clear.css
С уважением, Valery
Первая страница та же, что я указывал вначале (правлю по-живому, смотрю в Осле и Лисе -- результат один и тот же): http://www.myreal.net/example/index.html;
Её CSS: http://www.myreal.net/example/examples.css.
Вторая страница: http://www.myreal.net/SendMail.aspx, правильно откроется, если на первой чего-то напишешь в поля и нажмёшь пымпу [Далее];
Её CSS: http://www.myreal.net/clear.css
С уважением, Valery
Написал t во всех полях, нажал далее, попал на 2 страницу, но на ней ни нашел ни одного включения 1 страницы стилей, :!!!: она у тебя туда не импортируется ни как не @import ("http://www.myreal.net/example/examples.css") ; ни <link href="http://www.myreal.net/example/examples.css" type="text/css" rel="stylesheet"> в коде html, я вообще не нашел examples.css нигде.
Написал t во всех полях, нажал далее, попал на 2 страницу, но на ней ни нашел ни одного включения 1 страницы стилей, :!!!: она у тебя туда не импортируется ни как не @import ("http://www.myreal.net/example/examples.css") ; ни <link href="http://www.myreal.net/example/examples.css" type="text/css" rel="stylesheet"> в коде html, я вообще не нашел examples.css нигде.
А!!!... Так не могу импортировать, потому как не знаю о ней ничего. В этом же и дело. Я-то думал, что как в C# наследуем родительский признак.
А иначе никак?
Динамикой я запросто могу. Вставить переменную <% any_css %> и получи, как импорт, но нагрузка (если динамика), а со статики я не получу, только с динамики, а сервис расчитан на любые страницы, понимаешь? Э-э-эх, блин. Подожди, а в CSS нет такой фиговины как в XML, что-то типа DTD, я бы определил правила, ссылку делали бы на правила?
С уважением, Valery
может просто сделать несколько вариантов css файлов и пусть юзер выберит что нравиться и это значение хранить, а правила типа dtd в xml, для css не составишь, если можешь импортируй файл или url файла.
Можно было бы ещё проще. Но, ... теоретически, можно определить какой адрес, какой css запрашивает, следовательно (теретически) можно вычислить ряд адресов, секретность страдает, нагрузка увеличивается, что не есть -- хорошо для такого сервиса. А ему, бедному (сервису) следует трудиться над спам-проверкой и рассылкой сообщений. Хотя, разве что, дать еще одну переменную в форму: хайден, если выбрал какой-то из наших CSS, то пропиши его урл и получи страницу, хоть удалённо похожую на свою.
Я уверен, что есть какой-то, простой (не динамический) способ, пока не могу его выловить. Ещё подумаю. Всё равно спасибо тебе, за участие. Неплохой у Вас форум, честно. С наступающей Пасхой тебя, удачи и счастья.
С уважением, Valery
Я уверен, что есть какой-то, простой (не динамический) способ, пока не могу его выловить.
На чем строиться такая уверенность? В контексте поставленой тобою задачи (когда нифига не известно о пользователе, и нужно оградить пользователя от лишних теледвижений) это сделать нельзя.