8 Stimmen

Unterstützt nur Benutzer, die Javascript aktiviert haben

Ich erwäge, eine Website zu erstellen, die nur Benutzer mit aktiviertem JavaScript unterstützt.

Meine Begründung dafür ist, dass ich ein reichhaltiges Benutzererlebnis in einem ziemlich begrenzten Zeitbudget bieten möchte. Wenn ich also nur Leute unterstütze, die JS aktiviert haben, muss ich keine Zeit damit verbringen, sicherzustellen, dass die Benutzeroberfläche auch ohne JS funktioniert und serverseitige Äquivalente für die Validierung usw. zu erstellen.

  1. Ist dies möglich? Haben verschiedene Browser \platforms mich daran hindern, dies zu erreichen?
  2. Wie viel Prozent der Benutzer haben JS heutzutage deaktiviert?
  3. Wie würde ich über die Überprüfung gehen, wenn JS in C# aktiviert ist.

20voto

yrokam Punkte 216

Ihre Rechtfertigung ist in Ordnung. Allerdings haben Sie muss implementieren Sie die Validierung auf der Serverseite, da es sonst sehr einfach ist, Ihren Code zu missbrauchen, indem Sie einfach JavaScript deaktivieren.

Nein, wenn man es "unmöglich" macht, Daten ohne JavaScript zu übermitteln, wird das Problem nicht gelöst.

Aus persönlicher Erfahrung denke ich, dass die meisten Internetnutzer heutzutage JS aktiviert haben. Der Teil der Nutzer, der Probleme mit JS-lastigen Seiten haben könnte, sind mobile Nutzer. Wenn Sie diese also nicht erreichen müssen, sollte es wahrscheinlich kein großes Problem sein.

Der einfachste Weg, JS mit nur einer einzigen Weiterleitung zu bestimmen, wäre, ein Cookie mit JavaScript-Code zu setzen (document.cookie) und dann die oben erwähnte window.location für die Weiterleitung zu verwenden. Danach sollte der Server in der Lage sein, das von JS gesetzte Cookie zu lesen, vorausgesetzt, es ist aktiviert.

Auch wenn es ziemlich schwierig ist, Validierungsregeln und andere Logik automatisch auf dem Server und dem Client mit Technologie wie C# zu teilen, würde ich vorschlagen, sich Aptana Jaxer anzusehen. Jaxer ist ein JavaScript-basiertes, serverseitiges Framework, das es Ihnen unter anderem ermöglicht, denselben JavaScript-Code sowohl auf dem Client als auch auf dem Server zu verwenden. Sehr schön, wenn Sie auf dem Client validieren wollen, aber Ihre Validierungsregeln nicht zweimal schreiben wollen!

6voto

cletus Punkte 596503

Siehe:

Was die Validierung betrifft, sollten Sie immer eine serverseitige Validierung durchführen und niemals sich auf die Validierung durch den Kunden verlassen. Andernfalls werden Sie nur dazu aufgefordert, gehackt zu werden.

Wenn Sie ein reichhaltiges Benutzererlebnis bieten und/oder nicht die Zeit haben, zwei (oder mehr) Versionen Ihrer Website zu erstellen, um einen so kleinen Prozentsatz zu bedienen, denke ich, dass wir die Zeit erreicht haben, in der das normalerweise akzeptabel ist.

Dies hängt jedoch von den jeweiligen Umständen ab. Bestimmte Websites können auf Nutzungen abzielen, bei denen Javascript usw. unverhältnismäßig häufig deaktiviert wird.

4voto

Joel Coehoorn Punkte 377088

Sie übersehen einige Browser-Szenarien:

  • A Los immer mehr Menschen verwenden NoScript und ähnliche Systeme, bei denen Javascript zunächst deaktiviert ist. Das mag für Sie kein Problem sein, denn die meisten dieser Leute werden es nur einschalten, wenn sie es brauchen.
  • Googlebot kennt kein Javascript. Sie müssen dafür sorgen, dass der Inhalt auch ohne Javascript gut genug ist, damit Google ihn richtig indizieren kann.

2voto

Lucas Jones Punkte 19251

Heutzutage sind die einzigen Leute, die JS nicht verwenden, in der Regel:

  • Sehbehinderte, die Bildschirmlesegeräte verwenden (die Wirkung von JS geht normalerweise verloren)
  • Sicherheitsbewusst (oder paranoid?) und mit ausgeschaltetem NoScript surfen
  • Mobile Nutzer mit eingeschränkten Browsern

In ASP.NET oder jeder HTML-Site verwenden:

<script type="text/javascript">
    window.location="/hasJs.aspx";
</script>

Dadurch werden sie auf eine Seite für JavaScript-Benutzer umgeleitet, die möglicherweise ein Cookie oder etwas anderes setzt, das Sie in Ihrer Hauptseite überprüfen können. Zum Beispiel so (oder ähnlich):

(in hasJs.aspx):

protected void Page_Load(object sender, object e) {
    Response.Cookies.Add(new HttpCookie("hasJs", "yes"));
    Response.Redirect("/Default.aspx");
}

(Site.master) :

<% if ( ! Request.Cookies.Contains("hasJs") ) { %>
    <script type="text/javascript">
         window.location="/hasJs.aspx";
    </script>
    This site requires JavaScript.
<% } %>

0voto

Thomaschaaf Punkte 17382

Das ist natürlich möglich, und wenn der Kunde (falls Sie einen haben) damit einverstanden ist, ist das auch in Ordnung. Aber Sie müssen immer noch Validierung auf der Server-Seite zu tun.. sonst ein Skript Kind (auch wenn es in einem Unternehmen verwendet werden.) wird Ihr Skript brechen und vielleicht sogar Dinge tun, die Sie nicht wollen, zu passieren.

http://www.w3schools.com/browsers/browsers_stats.asp

Sie würden mit JS prüfen, ob JS aktiviert ist ;)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X