Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Замена CSS в кэше браузера (https://javascript.ru/forum/css-html/16233-zamena-css-v-kehshe-brauzera.html)

swing1991 30.03.2011 22:43

Замена CSS в кэше браузера
 
У меня на сайте есть 10 вариантов дизайна,для каждого свой css,есть тулбар свой,мне нужно сделать букмарклет javascript(Ну тоесть типа
javascript:void(alert("!!"));
) для замены браузерского css (как в опере,замена стиля на свой в настройках сайта) ...Заранее спасибо...

Aetae 31.03.2011 01:14

Не непонятно нифига)

Выстрел в небо:
javascript:document.getElementsByTagName('head')[0].appendChild(document.createElement('style')).innerHTML=prompt('CSS?','*{padding:0;margin:0}');void(0)

swing1991 31.03.2011 18:22

У меня есть строка
<link rel="stylesheet" type="text/css" href="/css/1.css" />

Мне нужно чтобы при вводе в адресную строку скрипта,менялась эта css и сохранялась,хотя-бы для чистки кэша...


P.S.
Прошу также объяснить ваш код,я пойму,имею большой опыт работы с ActionScript...Заметил что они очень похожи...

Sweet 31.03.2011 18:52

Цитата:

Сообщение от swing1991
сохранялась,хотя-бы для чистки кэша...

Вот это непонятно, а в остальном, думаю, нужно просто изменить href в нужном <link>. Тип того:
javascript:document.getElementById('someLink').href = 'css/newC.css';void true;

monolithed 31.03.2011 18:59

swing1991, где-то я уже это делал, полистайте мои сообщения по слову cookie

swing1991 31.03.2011 19:20

javascript:document.getElementById('someLink').href = 'css/newC.css';void true;


Я так понимаю "someLink" это ссылка с которой надо заменить...попытался сделать...не реагирует...

Aetae 31.03.2011 19:23

1. Кэш чистить надо стандартными средствами.
2. Все ёще непонятно:
-Что значит сохранялась? Сохраняться она будет до первой же перезагрузки страницы.
-При чем тут кэш?

swing1991 31.03.2011 19:39

Кэш я умею чистить,извините там опечатка не "для чистки кэша",а "до чистки кэша" ...тогда мне нужны варианты замены css с последующем сохранением...

Кэш тут имеет прямое значение.Кэш css файлов после перезагрузки страницы не меняется...проверенно...

----------------------------------------

В опере например можно указать свою таблицу стилей для сайта...может можно изменить эту таблицу посредством JavaScript

Aetae 31.03.2011 19:51

Да ***, что значит сохраняло?
На текущей странице, на диск, в кэше, на сервере, в вечной памяти?
На чистом js возможен только первый вариант.(ну и куки ещё, со всякой html5 хренью, но не об этом речь)
Возможно вам нужен userscript/usercss?

swing1991 31.03.2011 20:27

Епт...
Сохраняло в кэше...
нет userscript/usercss не подойдет...мне нужно чтобы юзер выполнив скрипт из адресной строки браузера(скрипт должен загружать другой сss),сменил дизайн сайта!Надо обойтись как-то без заморочек...без всяких скачиваний,мего операций...

рони 31.03.2011 20:47

swing1991,
javascript:function z(){var h=document.getElementsByTagName('head').item(0);var s=document.createElement('link');s.setAttribute('type','text/css');s.setAttribute('rel','stylesheet');s.setAttribute('href','http://assets.harkeydesign.net/css/diagnose.css');h.appendChild(s);}z();

Aetae 31.03.2011 20:51

javascript:document.getElementsByTagName('link')[0].href="new.css";void(0)

[0] - 1,2,3 - в зависомости от колличества link и позиции нужной.

swing1991 31.03.2011 20:54

Цитата:

Сообщение от рони
swing1991,javascript:function z(){var h=document.getElementsByTagName('head').item(0);va r s=document.createElement('link');s.setAttribute('t ype','text/css');s.setAttribute('rel','stylesheet');s.setAttr ibute('href','http://assets.harkeydesign.net/css/diagnose.css');h.appendChild(s);}z();

Спасибо!То что нужно!

swing1991 31.03.2011 21:36

Только вот верно говорили,не сохраняет...почему только не понимаю

Aetae 31.03.2011 22:06

Может вы за своими непонятными просьбами имели ввиду:
дать пользователям возможность менять дизайн вашего сайта, с запоминаием.

Пример:
http://javascript.info/play/EtIUfc

Выберите цвет и понажимайте Click to View - все сохраняется.


Использовалось:
http://javascript.ru/unsorted/top-10...e-deletecookie

Aetae 31.03.2011 22:11

Цитата:

Сообщение от swing1991 (Сообщение 98790)
Только вот верно говорили,не сохраняет...почему только не понимаю

А с хрена бы ему сохранять. JS меняет текущий активный код страницы, тот самый что генерируется браузером прямо сейчас. Работа js вообще нигде никаким образом сама по себе не сохраняется.

swing1991 31.03.2011 22:38

Не знал...

А какие еще методы запоминания есть...?Не имею возможности вставить код с получением куков...
Код:

document.write('<link rel="stylesheet" type="text/css" href="' + ( getCookie('css')||'default.css' ) + '" />')

melky 31.03.2011 22:43

можно использовать localStorage. можно использовать sessionStorage. можно исползовать window.name, даже хранилище Flash (тут уже хз)

в общем, вот ->>> http://javascript.ru/unsorted/storage

Aetae 31.03.2011 22:47

А можно использовать те же cookie в букмарклете.
javascript:alert(document.cookie)

melky 31.03.2011 22:49

зато в печеньках нельзя хранить данные по 2мб :)

swing1991 31.03.2011 23:04

Цитата:

Сообщение от Aetae (Сообщение 98805)
А можно использовать те же cookie в букмарклете.
javascript:alert(document.cookie)

Так а что это мне даст?Я 1 раз использую букмарклет,а дальше мне необходимо лазить по сайту с новым дизайном...

melky 31.03.2011 23:10

Цитата:

Сообщение от swing1991 (Сообщение 98811)
Так а что это мне даст?Я 1 раз использую букмарклет,а дальше мне необходимо лазить по сайту с новым дизайном...

ну тогда лучше делать это через AJAX, PHP и BD.

это сурово. а еще очень тяжело для бд, каждым запросом выяснять, что именно вашему айпишнику соответствует именно style.css, а не style2.css.

а что такого страшного в печеньках?

ну поставится она на корень домена, ну будет мешаться при каждом запросе. зато никаких морок с sessionStorage и другим новеньким говнецом)

swing1991 31.03.2011 23:22

Цитата:

Сообщение от Aetae (Сообщение 98805)
А можно использовать те же cookie в букмарклете.
javascript:alert(document.cookie)

Цитата:

Сообщение от melky (Сообщение 98812)
ну тогда лучше делать это через AJAX, PHP и BD.

это сурово. а еще очень тяжело для бд, каждым запросом выяснять, что именно вашему айпишнику соответствует именно style.css, а не style2.css.

а что такого страшного в печеньках?

ну поставится она на корень домена, ну будет мешаться при каждом запросе. зато никаких морок с sessionStorage и другим новеньким говнецом)

Нет,если бы имел возможность,давно-бы с БД поработал...или с куками...

melky 31.03.2011 23:35

не имеете возможности работать с куками?
то есть?

с бд это бред, лучше его даже не рассматривать... это то же самое,что и хранить картинки в бд ( бывает :) )

swing1991 01.04.2011 00:15

Я ни с 1 ,не с другим не имею возможности работать...

Aetae 01.04.2011 00:36

Вы хотите сделать букмарклет, подключающий выбранный css к чужому сайту и запоминающий выбор.
Обломитесь. Не для того js придуман.




Что-то похожее можно изобразить, через window.open() создав дочернее окно, и обращаясь обратно чeрез window.parent, по setTimeout'y отслеживать не изменилась ли страница, и коли да - заново править css. Будет работать до тех пор пока не уйдут со страницы.

swing1991 01.04.2011 18:21

Вай...для меня это сложновато,ща буду читать документацию...

Пашка 22.01.2012 17:15

А я сделал =)
 
Я не силен в js и практически не работал с ними, но как ни странно я смог написать js, который не просто подключает к чужому сайту css файл, но и может сохранять в куках браузера выбранный стиль.
Это же просто, народ. =)
Если еще нужно, обращайтесь:
pase[восемь][ноль][собака]ya.ru
сорри за такое мыло ) Не хочу спама роботами.

Aetae 22.01.2012 18:19

Магический код в студию. Если он конечно отличен от моего предложения.

Пашка 23.01.2012 00:04

Ну уж нет...
 
На отладку всего кода в целом у меня ушел весь день, так что извините, просто так отдавать его не хочется и сделан он очень криво(потому что я не знаю многих прибамбасов js) - не хочу позориться.

И я не просто сделал применение своих css стилей к чужому сайту, но и "создал" страничку, на которой эти самые стили можно выбрать(после выбора идет сохранение в куки), а потом уже стиль применяется в зависимости от того, какие там куки сохранены. Они живут 10 лет, поэтому не беспокоюсь о том, что каждый раз придется заходить на эту страницу.

Алгоритм разработал сам, отладил и настроил всё сам, собрав некоторые функции с форумов. Поэтому дерзайте, у вас то ума гораздо больше, чем у меня. Я всего лишь школьник.

Кстати, свои js, а значит и стили, можно применить практически во всех популярных браузерах.

И еще - не советую отвечать именно мне на мои комментарии, ибо я тут зарегистрировался только для того, чтобы похвастать и сказать народу, что это всё таки возможно. :p

devote 23.01.2012 08:35

Цитата:

Сообщение от Пашка
что это всё таки возможно.

доказательство, предоставьте... уж нам без разницы, говеный код получился или нет. Мы поправим, сделаем красивым. А так это пустой пердеж ничего не доказывающий.


Часовой пояс GMT +3, время: 04:42.