2009-06-04 37 views
9

Có thể kiểm tra xem trình duyệt của khách hàng có bật javascript từ mã ASP.NET không?Kiểm tra xem Javascript có được bật phía máy chủ ASP.NET

Tôi hy vọng sẽ làm điều này một cách lý tưởng trên PreRender của điều khiển hoặc PageLoad, để tôi có thể thay đổi cách chúng trông như thế nào.

Bất kỳ đề xuất, công việc xung quanh vv sẽ được nhiều đánh giá cao.

Trả lời

7

Bạn không thể làm điều đó, mà không đưa ra yêu cầu tiếp theo tôi sợ.

Có những giải thích có thể được tìm thấy bằng cách thực hiện tìm kiếm trên Google hầu hết sử dụng cuộc gọi AJAX hoặc trường bị ẩn thông qua javascript, sẽ không chạy nếu Javascript bị tắt.

Nếu bạn phải làm điều đó thì tôi sẽ thử làm theo yêu cầu đầu tiên từ khách hàng, và lưu một cookie (hoặc tương tự), sau đó kiểm tra giá trị của cookie trên các yêu cầu tiếp theo. Điều này giả định rằng người dùng không bật/tắt Javascript thường xuyên. Bạn cũng có thể lưu trữ một giá trị trong phiên.

Tôi hy vọng rằng sẽ giúp

+0

Tôi đã hy vọng cho một cái gì đó bụi nhưng nếu đó là cách duy nhất có thể được thực hiện ... Tôi sẽ lưu trữ nó trong một phiên var và có một phương thức accessor để làm cho nó sạch hơn. – Fermin

7

Page.Request.Browser.EcmaScriptVersion sẽ chỉ ra những gì ASP.NET nghĩ là đúng. Điều này giả định rằng các BrowserCaps là chính xác. Nó cung cấp cho bạn một dấu hiệu vượt qua đầu tiên mà có lẽ là khá gần.

EDIT: Tôi ban đầu hiểu lầm câu hỏi (được bật so với được hỗ trợ). Bạn có thể sử dụng phía máy chủ BrowserCaps để loại bỏ những UserAgents đó không hỗ trợ JavaScript. Sau đó sử dụng một dòng kịch bản trên mỗi yêu cầu để xác định nếu nó được kích hoạt thông qua cookie:

// let the server know JavaScript is enabled via session cookie 
document.cookie = "js=1; path=/"; 

sau đó phát hiện sự tồn tại server-side:

HttpCookie cookie = HttpContext.Current.Request.Cookies.Get("js"); 
bool js = (cookie != null) && (cookie.Value == "1"); 

Một khi họ đóng trình duyệt cookie này sẽ biến mất.

Các vấn đề liên quan