首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何切换我的样式表

问如何切换我的样式表
EN

Stack Overflow用户
提问于 2013-07-31 23:32:13
回答 1查看 151关注 0票数 0

我已经写了一些代码,可以在普通版本和可访问版本之间切换样式表。理论上这是可行的,但是一旦你刷新页面,它就会返回到默认版本。我知道我需要存储某种类型的cookie,我已经尝试了在Google上找到的几个脚本,但都不起作用。如果任何人有一个想法,我需要什么,以便选定的样式表,以坚持整个网站,直到另一个被要求,将不胜感激。

到目前为止的代码:

代码语言:javascript
复制
<link type="text/css" href="style.css" rel="stylesheet" title="normal" />
<link type="text/css" href="css/accessible.css" rel="alternate stylesheet" title="accessible" />

<form>
    <input type="submit" onclick="switch_style('normal');return false;" name="theme" value="" id="normal" title="View the site in it's original format">
    <input type="submit" onclick="switch_style('accessible');return false;" name="theme" value="" id="accessible" title="View the site in it's simplest form">
</form>

这是我合并的javascript,它似乎在某个地方有一个bug,但我无论如何也找不到它:

代码语言:javascript
复制
var style_cookie_name = "style" ;
var style_cookie_duration = 30 ;

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[i].rel.indexOf( "stylesheet" ) != -1) &&
  link_tag[i].title) {
  link_tag[i].disabled = true ;
  if (link_tag[i].title == css_title) {
    link_tag[i].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 '' ;
}
EN

回答 1

Stack Overflow用户

发布于 2014-01-26 02:07:47

get_cookie函数中有一些小错误。

删除:

代码语言:javascript
复制
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 '' ;
}

替换为:

代码语言:javascript
复制
function get_cookie ( cookie_name )
{
var cookie_string = document.cookie ;
if (cookie_string.length != 0) {
    var cookie_value = cookie_string.match(
        '(^|;) ?' + 
        cookie_name + 
        '=([^;]*)(;|$)' );
    return decodeURIComponent ( cookie_value[2] ) ;
}
return '' ;
}

希望它能帮助你或其他有同样问题的人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17974660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档