使用Javascript在网页上禁用/启用CSS

使用Javascript在网页上禁用/启用CSS,javascript,jquery,html,css,Javascript,Jquery,Html,Css,据我所知,我能够删除所有的CSS预装和网页上添加使用。我想实现一个按钮系统,其中“onclick”=启用/禁用网页CSS,即使是我的web主机预先加载的CSS。我想消除风格标签,以防止我的网站用户滞后。我更喜欢使用我上面链接的脚本,除非有其他更好的选择。是否可以启用CSS?单击同一按钮可禁用CSS?如果不可能的话,可以用这个快捷键吗?下面是首选脚本的示例: if (disable) { style = "disable"; } else { location.reload(); } 首选脚本:

据我所知,我能够删除所有的CSS预装和网页上添加使用。我想实现一个按钮系统,其中“
onclick
”=
启用/禁用
网页CSS,即使是我的web主机预先加载的CSS。我想消除风格标签,以防止我的网站用户滞后。我更喜欢使用我上面链接的脚本,除非有其他更好的选择。是否可以启用CSS?单击同一按钮可禁用CSS?如果不可能的话,可以用这个快捷键吗?下面是首选脚本的示例:

if (disable) {
style = "disable";
} else {
location.reload();
}
首选脚本:

function removeStyles(el) {
  el.removeAttribute('style');

  if(el.childNodes.length > 0) {
    for(var child in el.childNodes) {
        /* filter element nodes only */
        if(el.childNodes[child].nodeType == 1)
            removeStyles(el.childNodes[child]);
    }
  }
}

removeStyles(document.body);

要删除元素上的所有样式,可以执行以下操作

function removeStyles(el) {
  el.style = {};
}

要删除元素上的所有样式,可以执行以下操作

function removeStyles(el) {
  el.style = {};
}

换一种不同的方式怎么样? 例如,最初向名为“styled”的主体添加一个类

<body class="styled">

将其用作css定义中的主选择器

<style>
    .styled a { ... }
    .styled h1 { .... }
</style>

.样式为{…}
.样式为h1{…}
然后使用示例jquery脚本切换类:

<script>
    $(function() {
      $('#myswitch').click(function() {
         $('body').toggleClass('styled');
      });
    });
</script>

$(函数(){
$('#myswitch')。单击(函数(){
$('body').toggleClass('styled');
});
});
当类存在时,页面将被样式化,当不存在时,将没有样式化


当然,可能会有更好的办法,但这是我想到的第一件事

换一种办法怎么样? 例如,最初向名为“styled”的主体添加一个类

<body class="styled">

将其用作css定义中的主选择器

<style>
    .styled a { ... }
    .styled h1 { .... }
</style>

.样式为{…}
.样式为h1{…}
然后使用示例jquery脚本切换类:

<script>
    $(function() {
      $('#myswitch').click(function() {
         $('body').toggleClass('styled');
      });
    });
</script>

$(函数(){
$('#myswitch')。单击(函数(){
$('body').toggleClass('styled');
});
});
当类存在时,页面将被样式化,当不存在时,将没有样式化


当然,可能会有更好的方法,但这是我想到的第一件事

如果你想在页面上启用/禁用CSS,那么目标不仅仅是删除页面上的所有样式,你还需要将它们保存在某个地方,这样当用户重新单击按钮时,它们就可以被调用。我建议使用jQuery来帮助您实现这一点,可以通过以下方式实现:

var style_nodes = $('link[rel="stylesheet"], style');
style_nodes.remove();

$('*').each(function(num, obj) {
    var style_string = $(obj).attr("style");
    if (style_string) {
        $(obj).data("style-string", style_string);
        $(obj).attr("style", "");
    }
});
现在,您已经将样式表和样式DOM节点保存在
style_节点
中,并将实际的
style
属性保存在该特定DOM节点的jQuery数据属性中。单击将CSS添加回页面时,可以执行以下操作:

$('head').append(style_nodes);
$('*').each(function(num, obj) {
    if ($(obj).data("style-string"))
        $(obj).attr("style", $(obj).data("style-string"));
});

如果您想在页面上启用/禁用CSS,那么目标不仅仅是删除页面上的所有样式,还需要将它们保存在某个位置,以便用户重新单击按钮时可以调用它们。我建议使用jQuery来帮助您实现这一点,可以通过以下方式实现:

var style_nodes = $('link[rel="stylesheet"], style');
style_nodes.remove();

$('*').each(function(num, obj) {
    var style_string = $(obj).attr("style");
    if (style_string) {
        $(obj).data("style-string", style_string);
        $(obj).attr("style", "");
    }
});
现在,您已经将样式表和样式DOM节点保存在
style_节点
中,并将实际的
style
属性保存在该特定DOM节点的jQuery数据属性中。单击将CSS添加回页面时,可以执行以下操作:

$('head').append(style_nodes);
$('*').each(function(num, obj) {
    if ($(obj).data("style-string"))
        $(obj).attr("style", $(obj).data("style-string"));
});

看看这把我放在一起演示的JS小提琴:

使用JQuery,但我相信大多数框架都应该提供类似的功能

HTML:

CSS:


看看这把我放在一起演示的JS小提琴:

使用JQuery,但我相信大多数框架都应该提供类似的功能

HTML:

CSS:


又好又简单。。。唯一的缺点是,如果他无法控制这些样式,因为它们是由其他东西插入的(OP提到是由网络主机预加载的?)是的,这是一个好消息。。。剥离最初的内联css不是问题,但是返回它并不是一项简单的任务,除非重新加载执行得很好很简单。。。唯一的缺点是,如果他无法控制这些样式,因为它们是由其他东西插入的(OP提到是由网络主机预加载的?)是的,这是一个好消息。。。剥离最初的内联css不是问题,但是返回它并不是一项简单的任务,除非执行重新加载。我正要编写类似的东西。。。但是你帮了我的忙:)@jason很抱歉,我在jQuery方面的知识非常有限,所以我想知道,如何使用你的脚本设置类似于jsfiddle.net/5krLn3w1的东西?我正要写类似的东西。。。但是你帮了我的忙:)@jason很抱歉,我在jQuery方面的知识非常有限,所以我想知道,如何使用你的脚本设置类似于jsfiddle.net/5krLn3w1的东西?