Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Разукрашивание сайтов по-своему, подменой CSS и Классов

Ответить
Настройки темы
[решено] Разукрашивание сайтов по-своему, подменой CSS и Классов

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: hasherfrog
Дата: 20-10-2006
Описание: Исправил ошибки в коде
Здравствуйте. Речь пойдёт о Firefox и её возможностях.
Требуется помощь специалиста по классам и стилям.

Вот такой я букмарклет когда-то написал:
Код: Выделить весь код
javascript:(function(){var i,x,o,r,nw;nw=window.open('','css','');nw.document.open();nw.document.writeln('@-moz-document url-prefix(%22http://'+document.location.host+'/%22) {<br>');for(i=0;i<document.styleSheets.length;i++){try{x=document.styleSheets[ i];r=x.cssRules;}catch(e){r=null;alert('Oops. Access denied.');}if(!r)continue;for(j=0;j<r.length;j++){o=r[j].cssText;if(o.indexOf('rgb')==-1)continue;nw.document.writeln(o.replace(/\);/g,') !important;')+'<br>');}}nw.document.writeln('}<br>');nw.document.close();})()
UPD: Это уже поправленный букмарклет со второй страницы, в конце темы

Он выводит в окошко список стилей CSS для текущего открытого сайта (точнее, страницы, но как правило, на форумах и сайтах используются общие CSS) и для каждого стиля помечает цвет специальным словом "!important". Зачем это всё?

Открываете файл C:\Documents and Settings\ИмяПользователя\Application Data\Mozilla\Firefox\Profiles\ВашПрофиль\chrome\userContent.css
Копируете текст из открытого окна со стилями в конец файла, удаляете ненужное, правите цвета, как Вам хочется - и сайт открываться будет в приятной для Вас расцветке.

На самом деле, этот букмарклет - лишь вторая часть из более серьёзного проекта :] "раскрась свой форум по своему вкусу". И использовать его с толком смогут только продвинутые пользователи :] К ним у меня как раз вопрос.

Как видно, затрагивается только CSS. Но есть куча сайтов, где используются какие-то классы. Например, берём осзоновскую головную страницу.
HTML код: Выделить весь код
<td class="alt1Active" id="f39" align="left" width="47%"> <div> <a href="forum-39.html"><strong>Новости железа</strong></a> </div> <div class="smallfont">Новости из мира аппаратного обеспечения</div> </td>

Видим нечто вида /div class="smallfont"/
Вот это класс через подмену CSS не изменяется.
Или изменяется всё-таки? Как быть?
Можно ли заменить что-то в таблице стилей, чтобы повлиять на класс?

Отправлено: 09:43, 19-10-2006

 

Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Цитата:
Вот это класс через подмену CSS не изменяется.
Имеется ввиду редактированием userContent.css? У меня получилось изменить следующим образом
Код: Выделить весь код
td.alt1Active
{
 background-color: red !important;
}
Класс это некий набор стилевых описаний который применяется к тому или иному элементу. Существуют несколько способов записи классов. Самые распространенные:
Цитата:
.className - к любому элементу при записи в его теле class="className" будут применены стили описанные внутри класса.
element.className - только к элементу element при записи в его теле class="className" будут применены стили описанные внутри класса.
В вышеприведенном примере класс alt1Active окажет влияние только на элементы ячеек. Даже если класс будет применен к таблице или же к div, то при такой записи его стилевые описания будут проигнорированы.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:56, 19-10-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


А как тогда его достать? CSS я вытягиваю через document.styleSheets, а классы?

Отправлено: 13:05, 19-10-2006 | #3


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Чую какое-то непонимание или в терминах, или более общего порядка .
Букмарклет по сути выдает содержимое прикрепляемого css файла (в случае осзоны это что-то вроде http://forum.oszone.net/clientscript...13f6-00006.css). Т.о. список классов есть. Что же требуется?

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 13:48, 19-10-2006 | #4


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


>> по сути выдает содержимое прикрепляемого css файла
Не совсем так, по-моему. Это "пожёваный браузером" .css-файл, причём там некоторых стилей нет почему-то.
Но дело не в этом.

Стиля "td.alt1Active" нет ни там, ни в листинге, выводимом моём букмарклете! Он-то откуда? Из css-файла? Нет. Как этот класс подцепить из javascript'а?

Отправлено: 13:52, 19-10-2006 | #5


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


hasherfrog
можно привязаться к мозиле (хотя, может, это и стандартная функция. не знаю). Тогда можно будет с помощью XPath/XQuery через document.evaluate получить все теги, у которых установлен атрибут class. Если уж привязываться к мозиле (и опере), то можно офорсить перераскраску в виде greasemonkey/user.js скрипта, что бы она автоматически срабатывала. Да и не только раскраску так можно реализовать.

-------
http://ivank.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:07, 19-10-2006 | #6


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


ivank
>> о можно офорсить перераскраску в виде greasemonkey/user.js скрипта
Да, но через userContent.css получается вроде как ближе и правильнее, потому что не надо устанавливать greasemonkey.

>> XPath/XQuery через document.evaluate получить все теги
Круто. Я так не умею. Это в смысле перебрать все-все теги внутри html на наличие атрибута class?
А где всё-таки эти class определены-то? Например, на этом вот форуме? Я их не вижу чего-то, но они вовсю используются :-/

Отправлено: 14:31, 19-10-2006 | #7


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


hasherfrog
Может они вообще не определены. У нас такое вполне может быть

-------
http://ivank.ru


Отправлено: 14:54, 19-10-2006 | #8


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


На этом форуме классы, в частном случае alt1Active, определены в css файле:
Код: Выделить весь код
.alt1, .alt1Active
{
background-color: #F5F9FE;
color: #000000;
}
Данная запись читается следующим образом: для любых элементов с class="alt1Active" или class="alt1" установить такие-то и такие-то свойства. По сути это описание создает два одинаковых класса с разными именами. Однако потом один из них может расширен, чего в случае нашего форума, правда, на первый взгляд, не делается .

Обойти все элементы можно и иначе: elements = (document.all) ? document.all : document.getElementsByTagName("*"); Здесь elements - коллекция всех элементов документа. Циклом по ним и смотрим в свойство className - значение атрибута class элемента.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:09, 19-10-2006 | #9


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Кое-что прояснилось, спасибо.

Тогда такой вопрос. Почему на некоторых сайтах получить список CSS не получается? Например, букмарклет глохнет на mail.ru

/* Кстати, инфа из userContent.css перебивает изменённые букмарклетами цвета.
То есть, ВИДИМО, стили, применённые greasemonkey, окажутся "слабее" userContent.css */

Что прояснилось-то, забыл сказать
1. некоторые стили могут быть попросту не определены (даже у нас) - спасибо ivank, я чего-то не допёр :-)
2. стили для классов применяются не один раз, а сложносочинённо - спасибо Prisoner
2. введение специального стиля в userContent.css позволит контролировать составные (перебивать п.2) - спасибо Prisoner еще раз :-)

Отправлено: 16:27, 19-10-2006 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Разукрашивание сайтов по-своему, подменой CSS и Классов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Порядок построения классов pva Программирование и базы данных 13 23-03-2009 14:36
Php. Поиск документации для начинающих по использованию классов. BarsMaster Вебмастеру 5 10-01-2007 21:44
*Теория* | Умное разукрашивание, RGB в градацию серого hasherfrog Программирование и базы данных 22 11-11-2006 19:57
[решено] CSS RasKolbas Вебмастеру 6 09-11-2005 14:36
Reverse ingineering классов (обратно UML-диаграмме) djogik Программирование и базы данных 1 12-01-2005 21:29




 
Переход