Trước hết, các lớp UI của jQuery trong tài liệu chỉ áp dụng sau tài liệu.đã có. Bạn có thể tạo kiểu cho tất cả những gì bạn thích, nhưng bạn sẽ không loại bỏ được flash của nội dung không bị cản trở. Các lớp này rất hữu ích cho việc tạo giao diện người dùng, không ảnh hưởng đến cách mọi thứ trông trước giao diện người dùng.
Thứ hai, thẻ noscript về cơ bản là tránh được, vì nhiều lý do: 1) Nó không thực sự cho bạn biết nếu javascript là trên hay không. Ví dụ, nó có thể được kích hoạt trong trình duyệt nhưng bị chặn bởi tường lửa. 2) Đó là một thẻ cấp khối, vì vậy chỉ có một số nơi nhất định mà nó có thể xuất hiện hợp lệ. Nó không phải là một giải pháp tất cả các mục đích. 3) Thẻ không phân biệt giữa mức độ triển khai javascript trên các hệ thống khác nhau.
Bạn đã gần gũi hơn với thực tiễn tốt nhất trong bài đăng gốc của mình. Bí quyết là làm cả ẩn và hiển thị trong javascript. Trước tiên, hãy tạo kiểu cho trang của bạn để trang có thể được chấp nhận khi javascript bị tắt. Sau đó, để ngăn chặn các tia nội dung unstyled, làm ẩn các yếu tố xấu xí trong javascript trước document.ready (đây là phần quan trọng) bằng cách gán một lớp học để các yếu tố html:
jQuery('html').addClass('blahblah');
Vì phần tử html đã tồn tại, nó hợp lệ để làm việc với nó trước khi document.ready. Sau đó, giống như Nick nói, đưa các yếu tố vi phạm trong một div với class "startsugly" và sau đó đặt một dòng trong css của bạn mà giấu đi những yếu tố vi phạm:
.blahblah .startsugly {display: none;}
Vấn đề ở đây là display: none chỉ phát huy tác dụng khi javascript được bật. Người dùng bị vô hiệu hóa sẽ vẫn có thể truy cập nội dung của bạn. Sau đó, sau khi document.ready, đặt trong jQuery UI của bạn "mối lái" chức năng, và hiển thị các phần tử lỗi một lần nữa:
$(".startsUgly").show();
mặc dù nếu đó là nội dung mà chỉ có điều kiện có thể nhìn thấy trong một accordion hoặc một cấu trúc tab, bước cuối cùng này thậm chí có thể không cần thiết.
Newsflash: jQuery UI * luôn * trông xấu xí. –
Tôi sẽ nói cùng một điều ...: D –