Hướng dẫn asp.net check if javascript is enabled in browser - asp.net kiểm tra xem javascript có được bật trong trình duyệt không

Hướng dẫn asp.net check if javascript is enabled in browser - asp.net kiểm tra xem javascript có được bật trong trình duyệt không

Hướng dẫn asp.net check if javascript is enabled in browser - asp.net kiểm tra xem javascript có được bật trong trình duyệt không

Giới thiệu

Trong bài đăng này, tôi sẽ chỉ cho bạn cách phát hiện nếu máy khách có bật JavaScript hoặc vô hiệu hóa tại máy chủ web phụ trợ của bạn (trên bất kỳ nền tảng nào), để bạn có thể làm việc với nó trong mã phụ trợ của bạn và sử dụng nó như một boolean.

Thật không may, không có cách nào ngoài hộp để phát hiện nó. Trình duyệt không gửi tiêu đề/siêu dữ liệu HTTP đến máy chủ web cho biết trình duyệt có bật hoặc tắt JavaScript không.

Vì vậy, để phát hiện nó, chúng ta cần phải làm một công việc thủ công nhỏ.

Làm thế nào để làm nó

Mã phụ trợ

Bí quyết để phát hiện nó, là đặt cờ (cookie) trong trình duyệt máy khách cho biết trình duyệt có bật/tắt JavaScript không.

Sau đó, máy chủ có thể nhìn vào cookie đó và kiểm tra xem JavaScript có cho biết JavaScript của nó được bật/tắt không.

Trong ví dụ này, chúng ta hãy gọi Cookie hasjs=false. SO, nếu máy khách có cookie có tên hasjs và có giá trị ____10, thì điều đó có nghĩa là máy khách cho biết JavaScript là

this.IsJavascriptOn = GetIsJavascriptOn();
1, nếu không JavaScript là
this.IsJavascriptOn = GetIsJavascriptOn();
2.

Vì vậy, với mỗi

this.IsJavascriptOn = GetIsJavascriptOn();
3, hãy tạo một biến boolean trong máy chủ phụ trợ của bạn và gọi nó là
this.IsJavascriptOn = GetIsJavascriptOn();
4 và đặt nó thành
this.IsJavascriptOn = GetIsJavascriptOn();
0 nếu máy khách có cookie
this.IsJavascriptOn = GetIsJavascriptOn();
6 nếu không, sẽ đặt nó thành
this.IsJavascriptOn = GetIsJavascriptOn();
7.

Tôi sẽ sử dụng ASP.NET MVC làm ví dụ mã, nhưng khái niệm này là giống nhau cho tất cả các nền tảng.

Dưới đây là ví dụ về một hàm trả về

this.IsJavascriptOn = GetIsJavascriptOn();
0 nếu máy khách có cookie
this.IsJavascriptOn = GetIsJavascriptOn();
6, nếu không nó sẽ trả về
this.IsJavascriptOn = GetIsJavascriptOn();
7.

bool GetIsJavascriptOn()
{
    
    if (Request.Cookies.ContainsKey("hasjs") &&
        Request.Cookies["hasjs"] == "false")
        return false;
    else 
        return true;
}

Và sau đó ở đâu đó trong mã của chúng tôi, chúng tôi có thể đặt biến


@if (Model.IsJavascriptOn == true)
{
    <noscript>
        <meta http-equiv="Set-Cookie" content="hasjs=false; path=/">
        <meta http-equiv="Refresh" content="0">
    </noscript>
}
else //Client indicates javascript is disabled (cookie "hasjs=false" exists)
{
    <script>
        document.cookie = "hasjs=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/";
        location.reload(true); 
    </script>
}
1 của mình như bên dưới:

this.IsJavascriptOn = GetIsJavascriptOn();

Và bây giờ, chúng tôi có Boolean xác định xem máy khách có bật/tắt JavaScript hay không, vì vậy bây giờ chúng tôi có thể sử dụng biến này ở mọi nơi trong mã backendcode của chúng tôi.

Kết xuất HTML

Vì vậy, bây giờ, chúng tôi cần phải đặt cookie

this.IsJavascriptOn = GetIsJavascriptOn();
6 nếu JavaScript bị tắt và xóa cookie
this.IsJavascriptOn = GetIsJavascriptOn();
6 nếu JavaScript được bật. Và điều đó đã được thực hiện khi chúng tôi hiển thị HTML.

Chúng tôi phải hiển thị một số HTML tùy thuộc vào việc máy khách có chỉ ra rằng JavaScript được bật/tắt hay không. Và điều đó được hiển thị dưới đây.

Chúng tôi sẽ đặt mã này vào bên trong:


@if (Model.IsJavascriptOn == true)
{
    <noscript>
        <meta http-equiv="Set-Cookie" content="hasjs=false; path=/">
        <meta http-equiv="Refresh" content="0">
    </noscript>
}
else //Client indicates javascript is disabled (cookie "hasjs=false" exists)
{
    <script>
        document.cookie = "hasjs=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/";
        location.reload(true); 
    </script>
}

Bây giờ chúng tôi thực sự đã hoàn thành. Nếu bạn chỉ muốn kiểm tra nó và không muốn bất kỳ lời giải thích nào, bạn có thể bỏ qua phần còn lại.

Ở đây, chúng tôi vẽ khối nếu biến


@if (Model.IsJavascriptOn == true)
{
    <noscript>
        <meta http-equiv="Set-Cookie" content="hasjs=false; path=/">
        <meta http-equiv="Refresh" content="0">
    </noscript>
}
else //Client indicates javascript is disabled (cookie "hasjs=false" exists)
{
    <script>
        document.cookie = "hasjs=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/";
        location.reload(true); 
    </script>
}
4Equals
this.IsJavascriptOn = GetIsJavascriptOn();
7 của chúng tôi, nếu không chúng tôi vẽ

@if (Model.IsJavascriptOn == true)
{
    <noscript>
        <meta http-equiv="Set-Cookie" content="hasjs=false; path=/">
        <meta http-equiv="Refresh" content="0">
    </noscript>
}
else //Client indicates javascript is disabled (cookie "hasjs=false" exists)
{
    <script>
        document.cookie = "hasjs=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/";
        location.reload(true); 
    </script>
}
6Block.