Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

    Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

     

Java скрипт за смяна на облика на сайт. Как да го накарам да помни бисквитките?


Препоръчан отговор


Здравейте! Направил съм два облика (css стила) на сайт, които да се сменят от хората, които го преглеждат. Проблемът е,че не помни какво последно му е зададено и при опресняване или навигация към друга страница, се връща на темата, която е на подразбиране.

За запомняне чрез бисквитки от браузера на потребителя, съм задал в index.php:

<body onload="set_style_from_cookie()">
Уж там е ключът към палатката, но не се получава.

Ето го и java скрипта:

<script type="text/javascript">

// *** TO BE CUSTOMISED ***

var style_cookie_name = "style" ;

var style_cookie_duration = 30 ;

// *** END OF CUSTOMISABLE SECTION ***

function switch_style ( css_title )

{

var i, link_tag ;

for (i = 0, link_tag = document.getElementsByTagName("link") ;

i < link_tag.length ; i++ ) {

if ((link_tag.rel.indexOf( "stylesheet" ) != -1) &&

link_tag.title) {

link_tag.disabled = true ;

if (link_tag.title == css_title) {

link_tag.disabled = false ;

}

}

set_cookie( style_cookie_name, css_title,

style_cookie_duration );

}

}

function set_style_from_cookie()

{

var css_title = get_cookie( style_cookie_name );

if (css_title.length) {

switch_style( css_title );

}

}

function set_cookie ( cookie_name, cookie_value,

lifespan_in_days, valid_domain )

{

var domain_string = valid_domain ?

("; domain=" + valid_domain) : '' ;

document.cookie = cookie_name +

"=" + encodeURIComponent( cookie_value ) +

"; max-age=" + 60 * 60 *

24 * lifespan_in_days +

"; path=/" + domain_string ;

}

function get_cookie ( cookie_name )

{

var cookie_string = document.cookie ;

if (cookie_string.length != 0) {

var cookie_value = cookie_string.match (

'(^|; )[\s]*' +

cookie_name +

'=([^;]*)' );

return decodeURIComponent ( cookie_value[2] ) ;

}

return '' ;

}

</script>

Много ще се радвам ако някой помогне да изляза от омагьосания кръг.

Редактирано: 24 часа по - късно:

Оправих се ;) . Един пич е надраскал още през далечната 2001-ва година решението. Тъй като може да има и други хора със същите перипетии, публикувам кода:

function setActiveStyleSheet(title) {

var i, a, main;

for(i=0; (a = document.getElementsByTagName("link")); i++) {

if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {

a.disabled = true;

if(a.getAttribute("title") == title) a.disabled = false;

}

}

}

function getActiveStyleSheet() {

var i, a;

for(i=0; (a = document.getElementsByTagName("link")); i++) {

if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");

}

return null;

}

function getPreferredStyleSheet() {

var i, a;

for(i=0; (a = document.getElementsByTagName("link")); i++) {

if(a.getAttribute("rel").indexOf("style") != -1

&& a.getAttribute("rel").indexOf("alt") == -1

&& a.getAttribute("title")

) return a.getAttribute("title");

}

return null;

}

function createCookie(name,value,days) {

if (days) {

var date = new Date();

date.setTime(date.getTime()+(days*24*60*60*1000));

var expires = "; expires="+date.toGMTString();

}

else expires = "";

document.cookie = name+"="+value+expires+"; path=/";

}

function readCookie(name) {

var nameEQ = name + "=";

var ca = document.cookie.split(';');

for(var i=0;i < ca.length;i++) {

var c = ca;

while (c.charAt(0)==' ') c = c.substring(1,c.length);

if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);

}

return null;

}

window.onload = function(e) {

var cookie = readCookie("style");

var title = cookie ? cookie : getPreferredStyleSheet();

setActiveStyleSheet(title);

}

window.onunload = function(e) {

var title = getActiveStyleSheet();

createCookie("style", title, 365);

}

var cookie = readCookie("style");

var title = cookie ? cookie : getPreferredStyleSheet();

setActiveStyleSheet(title);

Редактирано от Erlkönig (преглед на промените)
Линк към този отговор
Сподели в други сайтове

Добавете отговор

Можете да публикувате отговор сега и да се регистрирате по-късно. Ако имате регистрация, влезте в профила си за да публикувате от него.

Гост
Напишете отговор в тази тема...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Разрешени са само 75 емотикони.

×   Съдържанието от линка беше вградено автоматично.   Премахни съдържанието и покажи само линк

×   Съдържанието, което сте написали преди беше възстановено..   Изтрий всичко

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Добави ново...

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите Условия за ползване