【发布时间】:2009-09-23 15:36:24
【问题描述】:
我一直在使用这段代码以编程方式检查 Javascript 是否可用并使用不同的行为 CSS。
如果禁用 Javascript,它只会显示正常的无序列表。
如果启用了javascript,列表将在页面加载后进行转换,然后 显示给用户(避免无序列表元素在转换之前/期间可能的重绘/闪烁)。
是否有可能 document.getElementsByTagName('body') 在页面渲染的这个阶段实际上可以返回一个空数组,或者它始终可用?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Title</title>
<style type="text/css">
.javascript ul { display:none; }
.no_javascript ul { display:block; }
.transformed { background-color: yellow; }
</style>
</head>
<body class="no_javascript">
<script type="text/javascript">
// Inform us that javascript is available
(function() {
var body = document.getElementsByTagName('body');
if ( body && body[0] ) {
body[0].className = body[0].className.replace(/no_javascript/, "javascript");
}
})();
</script>
<ul>
<li>Option 1</li>
<li>Option 2</li>
<li>Option 3</li>
</ul>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$(".javascript ul").addClass("transformed").css('display','block');
});
</script>
</body>
</html>
更新:How to eliminate post-render "flicker"? 似乎与我的问题重复。这是我试图正确解决的问题。
【问题讨论】:
标签: javascript jquery html css