已禁用为Javascript切换css
我在禁用Javascript时切换css时遇到问题 我有以下代码:已禁用为Javascript切换css,javascript,css,switch-statement,Javascript,Css,Switch Statement,我在禁用Javascript时切换css时遇到问题 我有以下代码: <style type="text/css">.nonjsonly{display:none;}.jsonly{display:inline;}</style> <noscript><style type="text/css">.nonjsonly{display:inline}.jsonly{display:none}</style></noscript>
<style type="text/css">.nonjsonly{display:none;}.jsonly{display:inline;}</style>
<noscript><style type="text/css">.nonjsonly{display:inline}.jsonly{display:none}</style></noscript>
.nonjsonly{display:none;}.jsonly{display:inline;}
.nonjsonly{display:inline}.jsonly{display:none}
Witch现在正在工作,但W3C不批准它,因为noscript在html头中是非法的(代码在头中)
你知道怎么做吗
提前感谢处理此问题的更合适方法是首先放置非js CSS,不带任何
标记,然后是加载支持JavaScript的客户端样式表的脚本。然后,支持JS的css应该级联以覆盖基本工作表
<style type='text/css'>
/* baseline CSS for all clients */
</style>
<!-- Then a script loads an additional stylesheet which cascades to override the baseline -->
<!-- Obviously, won't get loaded by noscript clients -->
<script type='text/javascript'>
document.write("<link type='text/css' rel='stylesheet' href='/path/to/js-friendly.css' />");
</script>
/*所有客户端的基线CSS*/
文件。填写(“”);
将默认css放在第一位:
<style type="text/css" src="default.css" />
因此,非JS样式适用于所有人。然后使用一些JS动态加载“启用JS”样式:
css=document.createElement('link');
setAttribute('rel','stylsheet');
setAttribute('type','text/css');
css.setAttribute('href','js styles.css');//根据需要改变
document.getElementsByTagName('head')[0].appendChild(css);
这将覆盖非js样式。您可以这样做
<script>
document.getElementsByTagName('body')[0].className += ' jsActive';
</script>
document.getElementsByTagName('body')[0].className+='jsActive';
如果Javascript可用,该脚本将“jsActive”类写入Body元素。
您没有“noJavascipt”类,但可以使用CSS进行选择并构建函数
html
元素添加.js
.js
.js #foo
更好的方法是,使用来检测更高级的功能(它也会自动添加
.js
。不要忘记添加空格:+='jsActive'
简单有效!,非常感谢。我试着做一些复杂的事情,比如改变类属性:D
#foo
.js #foo