Có <script>
là dành cho. Ban đầu chỉ cần ẩn phần cụ thể bằng cách sử dụng CSS và sử dụng JavaScript để hiển thị nó. Dưới đây là một kickoff ví dụ cơ bản:
<!doctype html>
<html lang="en">
<head>
<title>SO question 2297643</title>
<script>
window.onload = function() {
document.getElementById("foo").style.display = 'block';
};
</script>
<style>
#foo { display: none; }
</style>
</head>
<body>
<noscript><p>JavaScript is disabled</noscript>
<div id="foo"><p>JavaScript is enabled</div>
</body>
</html>
... hoặc, với sự giúp đỡ của jQueryready()
mà là một chút sớm hơn với hiển thị nội dung:
<!doctype html>
<html lang="en">
<head>
<title>SO question 2297643 with jQuery</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
$('#foo').show();
});
</script>
<style>
#foo { display: none; }
</style>
</head>
<body>
<noscript><p>JavaScript is disabled</noscript>
<div id="foo"><p>JavaScript is enabled</div>
</body>
</html>
Để cải thiện kinh nghiệm người dùng, hãy xem xét việc đặt các <script>
gọi trực tiếp sau phần tử HTML cụ thể cần được chuyển đổi để không có "flash of content" hoặc "shuffle element". Andrew Moore đã đưa ra một số good example trong chủ đề này.
Hoặc, bạn có thể làm điều đó (hacky) theo cách ngược lại với <style>
trong <noscript>
. Đây là cú pháp hợp lệ, nhưng cho phép tất cả các trình duyệt từ IE6 trở lên, bao gồm cả Opera W3C-nghiêm ngặt:
<!doctype html>
<html lang="en">
<head>
<title>SO question 2297643 with CSS in noscript</title>
</head>
<body>
<noscript>
<style>#foo { display: none; }</style>
<p>JavaScript is disabled
</noscript>
<div id="foo"><p>JavaScript is enabled</div>
</body>
</html>
Hiển thị phần tử trong trình xử lý 'onload' có thể làm cho trang bị chỉnh lại, di chuyển các phần tử. Phần tử cũng sẽ không xuất hiện cho đến khi tất cả các hình ảnh trên trang đã tải xong, không phải là điều tốt nếu bạn đang tìm nạp một hình ảnh lớn từ máy chủ chậm :-) Lời gọi 'ready' của jQuery sẽ không có vấn đề này vì nó hoạt động ngay khi tài liệu được phân tích cú pháp. –
Có, cách jQuery hoặc CSS-in-noscript được ưa thích hơn. – BalusC
Sử dụng cách tiếp cận jQuery không thực sự cho biết javascript bị tắt trong trình duyệt, điều đó có nghĩa là jQuery không được tải (có thể bị chặn) hoặc CDN không hoạt động, trong khi các video trên YouTube và tiện ích Facebook của bạn tiếp tục hoạt động tốt . –