Ich dachte, wenn für alle Benutzer einer Website JavaScript aktiviert sein muss, ist es in Ordnung, aufdringliches JavaScript zu verwenden?
Ich bin alle für eine progressive Verbesserung, aber was bringt es, wenn eine erweiterte Webanwendung Benutzer an die Tür hüpft, wenn sie einen alten Browser oder JavaScript deaktiviert haben?
Wir haben eine sehr schlanke Zielgruppe und können unserer Zielgruppe mitteilen, welche Browser und Plugins / Funktionen sie benötigen. Meine Frage ist also, ist das Mischen von JS und HTML in diesem Fall in Ordnung? Wie die Verwendung von Onclick-Attributen.
Antworten:
Dies ist eher eine Geschäftsentscheidung als eine Entwurfsentscheidung.
Die Bereitstellung einer Version der Website, die ohne JavaScript (oder Flash oder Silverlight) funktioniert, ist kostenpflichtig. Das Unternehmen muss entscheiden, ob sich der Umsatz- / Besucherverlust lohnt oder nicht.
Wenn das Schreiben dieser Version also 10.000 US-Dollar kostet (die Anzahl ist zwar groß, aber nur für dieses Beispiel vorhanden), wird das Unternehmen diesen Aufwand dann über die gesamte Lebensdauer der Website zurückerhalten? Wenn nicht, geben Sie diese Version nicht an.
Wenn das Schreiben dieser Version jedoch nur 100 US-Dollar kostet, ist es sinnvoll, die ordnungsgemäße Verschlechterung bereitzustellen.
Nachdem Sie die geschäftliche Entscheidung getroffen haben, nur auf JavaScript-fähige Browser abzuzielen und zu erwarten, dass Ihre Benutzer JavaScript aktiviert haben, ist es absolut sinnvoll, dass Ihre Anwendung die Funktionen nutzt, die Ihnen jetzt zur Verfügung stehen. Das einzige, was Sie tun müssen, ist (wie bei Stack Overflow selbst) eine Warnung, dass die Site nicht richtig funktioniert, wenn der Benutzer sie nicht aktiviert hat.
quelle
Etwas, das noch niemand erwähnt hat ...
99% der Websites begrüßen einen bestimmten Besucher, einer mit wenig bis gar keinem JavaScript. Dieser Besucher hat einen Namen: Googlebot .
Ein großer Grund, warum sich jeder auch um blinde Besucher kümmern sollte…
Wenn Sie einer der wenigen sind, die sich überhaupt nicht für Suchmaschinenverkehr interessieren, ist dies Ihr Vorrecht - aber es ist sicherlich keine allgemeine Regel.
quelle
Leute, die Dinge für bestimmte interne Umgebungen schreiben, sind ein wichtiger Grund, warum es IE6 immer noch gibt.
Denk darüber nach
quelle
Wenn Sie eine reine JS-Site erstellen (in diesem Fall ist "Anwendung" vielleicht ein besseres Wort), spielt die sogenannte "Unauffälligkeit" von JS keine so große Rolle wie in dem Fall, in dem Sie sich elegant auf Nicht-JS-Site verschlechtern müssen. JS-Version.
Allerdings: Unauffällig geschriebenes JavaScript ist im Allgemeinen einfacher zu schreiben (und am wenigsten finde ich es so) und zu pflegen. Es ist einfacher, Änderungen am HTML-Layout vorzunehmen, die JS nicht beschädigen, und Änderungen an JS, ohne sich Gedanken über das Brechen von HTML zu machen.
quelle
Wenn Sie eine Website erstellen, würde ich JavaScript unauffällig halten. Wenn Sie jedoch eine Form einer Anwendung erstellen (z. B. Google Text & Tabellen), ist JavaScript ziemlich aufdringlich.
JavaScript und HTML5 eignen sich hervorragend zum Erstellen von Anwendungen, wenn Sie dies benötigen, aber es ist wirklich eine geschäftliche Entscheidung.
quelle
Die Mehrheit der Benutzer (meine Benutzer, ich weiß nichts über Ihre Benutzer) hat JavaScript verfügbar und aktiviert. Lassen Sie uns diesen Benutzern eine großartige Benutzererfahrung bieten. Sie müssen jedoch weiterhin eine Version Ihrer Website bereitstellen, die ohne Javascript funktioniert. Ich weiß, dass es mühsam ist, zwei Versionen zu erstellen, aber so läuft es in der Webentwicklung. (In Wirklichkeit müssen Sie möglicherweise mehrere Versionen erstellen, eine dritte ist möglicherweise eine mobile Version Ihrer Website.)
Was Sie nicht tun möchten, ist das Design für den kleinsten gemeinsamen Nenner: "Nun, es gibt einige Benutzer, die Javascript deaktiviert haben, also werden wir unsere Website so gestalten, dass sie für sie gut funktioniert - kein Javascript, schlagen Sie den Server für alles . " Dies bestraft nur die Mehrheit Ihrer Benutzer, die über Javascript verfügen.
quelle
Sie haben die Verwendung von Onlick-Attributen erwähnt. Planen Sie die Verwendung eines JavaScript-Ereignishandlers für die Seitennavigation?
Ich würde aus einem einzigen Grund dagegen empfehlen: Es bricht das Klicken in der Mitte .
Unter der Annahme, dass JavaScript aktiviert ist, sind diese für das regelmäßige Klicken auf Links funktional gleichwertig:
Wenn Sie versuchen, mit der mittleren Maustaste auf das erste Beispiel zu klicken, wird anstelle von myPage.htm eine leere Seite angezeigt.
Abgesehen von diesem Beispiel halte ich es für in Ordnung, aufdringliches JavaScript zu verwenden, wenn es für Sie geschäftlich sinnvoll ist. Das Schreiben (aber nicht unbedingt das Verwalten) von Inline-JavaScript nimmt weniger Zeit in Anspruch, und der Verlust der progressiven Verbesserung ist in Ihrer Situation möglicherweise nicht wichtig.
quelle
Aufdringliches JavaScript war vor 10 Jahren in Ordnung. Es ist auch in Ordnung, wenn Sie ein Amateur sind oder wenn Sie einen Wegwerfprototyp bauen oder wenn es einen Umstand gibt, der dies erforderlich macht, wie z. B. die Abhängigkeit von Legacy-Code oder datengesteuertem Code, und dies würde einfach nur Kosten verursachen zu viel, um al zu reparieren
Wenn Sie etwas von Grund auf neu erstellen, befolgen Sie die Standards, schreiben Sie guten, sauberen und wartbaren Code. Schreiben Sie etwas, auf das Sie stolz sein werden und das Sie in einem Jahr nicht krank macht, wenn ein armer Trottel Sie um Hilfe bittet, weil er einen Hackjob, den Sie gemacht haben, nicht versteht. Schreiben Sie etwas, das sicherstellt, dass Ihre Webdesigner CSS problemlos austauschen können, ohne sich in unordentlichem HTML und JavaScript zurechtfinden zu müssen.
Erstellen Sie die Anwendung so, dass sie Platz zum Wachsen bietet, sodass jeder Entwickler sie verwalten kann. Die jetzt investierte Zeit spart in Zukunft Zeit, wenn nicht Ihre Zeit, die anderer.
Stellen Sie sicher, dass das JavaScript in einem anderen Kontext wiederverwendet werden kann. Stellen Sie sicher, dass eine vollständige Neugestaltung der Website genau das sein kann, eine Neugestaltung und keine vollständige Neugestaltung von etwas, das bereits vorhanden ist, aber nicht hart gebaut wurde.
Stellen Sie sich vor, wie peinlich es wäre, genauso viel Zeit für eine Neugestaltung aufwenden zu müssen wie für die ursprüngliche Erstellung.
Vertrauen Sie mir aus Erfahrung, unauffälliges JavaScript verhindert, dass Sie kostspielige Fehler machen.
quelle
Okay, nenn mich einfach den Krypta-Wächter bei all dem Nekro, das ich mache, aber ich habe nie das Gefühl gehabt, dass der wahre Wert davon richtig verstanden wurde. In der Vergangenheit wurde behauptet, dass "unauffälliges JavaScript" oder das Heraushalten Ihres JS aus dem HTML-Code über Inline-HTML-Ereignishandlerattribute und Skript-Tags, die nicht so oft wie möglich mit einer Datei verknüpft sind, ein wichtiges Schlüsselelement von:
LÜGEN! (Nun, jetzt wären sie)
Die Wahrheit ist, dass Sie technisch aufdringliches JavaScript verwenden und trotzdem die oben genannten drei Elemente entfernen können. Es sei denn, Sie haben HTML-Inhalte dynamisch erstellt, was an diesem Tag ein großes SEO-No-No war.
Aber hör auf und denk nach ... über DICH!
Wirklich, der große Vorteil, der größte und am meisten unterverkaufte Gewinn bei der Aufrechterhaltung der Trennung war immer der direkte Vorteil, den der Entwickler daraus zieht. Sie können so viele Ereignishandler wie Sie möchten im selben HTML-Element für dasselbe Ereignis haben, wie es zweckmäßig ist. Das bedeutet, wenn ein Tag mit
class="some_class"
immer ein bestimmtes Verhalten aufweist, aber auch ein Bonusverhalten, wenn es sich in einemid="bonus_behavior"
Div befindet, müssen wir nicht mit der Logik in unserem einmal erlaubten Ereignishandler herumspielen, um dies zu verzweigen. Wir können je nach Kontext nur Handler hinzufügen oder nicht.Einfach zu lesen
Ein weiterer Vorteil ist die Lesbarkeit. Dies war ein kritischeres Problem, als die Browser-Tools aus der exklusiven Fehlermeldung des IE bestanden, die Ihnen mitteilte, dass etwas nicht stimmte,
[object]
aber IMO, es ist immer noch eine große Sache. CSS hier, JS dort und HTML ist der Ort, an dem sich sowohl sie als auch der Server treffen. Wenn all diese Dinge an einem Ort zusammenkommen, ist es sinnvoll, sich auf die Hooks (IDs, Klassen und Hierarchien) zu verlassen, um eine Abstraktionsebene zu erstellen, die alles verwendet, um eine Verbindung zum HTML herzustellen.IMO: Je mehr Sie HTML, CSS und JS voneinander trennen können, desto einfacher ist es, nicht nur zu lesen, sondern auch zu ändern und zu verstehen, was vor sich geht. Ich sehe ein leeres Div mit "dynamic_combo_box" als Klasse und ich habe eine gute Idee, dass etwas eine ausgefallene Auswahl macht, die Daten dynamisch lädt. Ich habe einen Hinweis darauf, wie man das in JS und CSS findet, und wenn ich in diesen Belangen auf die Klasse stoße, habe ich eine gute Idee, worum es geht und wie man es im HTML findet.
Zu einfach, um noch schlampiger zu werden
Und natürlich geht die Lesbarkeit tendenziell mit der Wartbarkeit einher. Wenn Sie die Dinge einfach direkt erledigen, indem Sie alles in Skript-Tags ablegen, in denen sich der relevante HTML-Code befindet, wird es für die Benutzer einfacher, das Skript einfach auszuschneiden und in den HTML-Code einer anderen Seite einzufügen, an der sie gerade arbeiten Sie wollen ähnliche Funktionen, was bedeutet, dass Sie jetzt eine Sache haben, die höchstwahrscheinlich irgendwann zu zwei ärgerlich ähnlichen, aber nicht zu 100% ähnlichen Dingen wird, deren Verhalten im Laufe der Zeit problematisch werden kann, indem sie sich den Erwartungen widersetzen und die Hinzufügung einer sinnloseren Verzweigung erfordern, um Ausnahmen zu behandeln, die man benötigt ein anderer tat es nicht.
Das Rigging-Verhalten dieser HTML-Hooks fördert also die intelligente Wiederverwendung von Code. Wenn Sie das Verhalten für eine alternative Implementierung verzweigen müssen, rufen Sie einfach dieselbe Funktion auf und behandeln sie dort mit einer HTML-Hierarchie oder einem Daten-Att, der ein Alt-Verhalten auslöst. Es ist ein One-Stop-Shopping für alle, die verstehen möchten, wie UI-Elemente eines bestimmten Typs funktionieren, und diese verächtlich faulen Cut & Paste-Typen werden das Richtige / Wartungsfreundlichere tun, nur weil es am einfachsten ist Jetzt tun und das ist der beste Weg, um Wartbarkeit zu erreichen. Machen Sie es zum einfachsten "duh", selbst für jemanden, dem es egal ist, ob es sich um Panik oder Apathie handelt.
Aber was ist mit 2014?
Es mag ein legitimer Punkt sein, dass in modernen Anwendungen mit nur einer Seite einige dieser klebrigen Dinge vielleicht nicht so dogmatisch wie bisher festgehalten werden sollten, aber glauben Sie mir, wenn ich sage, ich glaube nicht, dass ich der einzige bin, der das tut wurde darauf verkauft, weil es letztendlich die Arbeit erleichtert. Ich bin faul (ich hoffe) meistens gut. Ich mag es, wenn ich nur Dinge an einem Ort ändern muss, um Änderungen in einer App zu erhalten, wenn ich nur an einem Ort suchen muss, um herauszufinden, was der Fehler ist, und wenn ich es leicht habe zu verstehen, was zum Teufel ist weiter und wie man diesen Code am besten wiederverwendet, um etwas sehr Ähnliches zu tun.
Es ist gut, eine DB oder eine Datenschicht aufzuteilen. Es ist letztendlich ein Grund, warum ich nicht einfach so viel Zeit gespart habe, als würde ich mir am Abend zuvor alle fünf Minuten Zeit nehmen, um die Wäsche zu waschen, anstatt am nächsten Morgen 10 Minuten damit zu verbringen, deine Boxer zu frieren und paranoide Geruchskontrollen durchzuführen.
Für mich waren es diese egoistischen Motivationen, die immer der Hauptgrund dafür waren, dass ich nicht nur an unauffälligen JS festhalte, sondern auch an der Trennung von Stil / Verhalten / Inhalten, so weit wie möglich, selbst wenn WHAT-freaking-WG ihr verdammtstes tut Verwirren Sie diese Bedenken auf verständlicherweise großartige und coole / handliche Weise.
Jetzt, da alle SPAs durchführen und es fast albern ist, das Geschäft davon zu überzeugen, dass wir uns um Leute kümmern sollten, die ohne JS arbeiten (Barrierefreiheit kann jetzt angeblich mit JS-generierten Inhalten behandelt werden), scheint es der nächsten Generation von JS-Entwicklern weniger wichtig zu sein Aber IMO, es gibt immer noch einen Gewinn und es ist hauptsächlich für Sie, den Entwickler, der dieses Zeug schreibt und pflegt. Und wirklich, dieser Gewinn hätte immer der am meisten unterstrichene Punkt sein sollen, war es aber nie aus irgendeinem Grund, weil er letztendlich Ihnen und auch dem Produkt durch einen glücklichen Zufall zugute kommt, da er einfacher zu optimieren / zu modifizieren / zu debuggen ist.
Ist es jemals in Ordnung?
Nun ja, ich denke. In einer Einweg-Wegwerf-App für einen Wettbewerb oder so. Aber ich würde es trotzdem tun, nur weil ich es mir angewöhnt habe und es eigentlich nicht schwieriger ist.
quelle
Wenn Sie Ihre Zielbetriebsumgebung kennen, können Javascript und Frameworks wie jQuery ein wahrer Glücksfall sein. Zum Beispiel in einer Unternehmensumgebung, in der das SOE über Javascript und IE8 verfügt, ist es mehr als sicher, intensive clientseitige Browseranwendungen zu schreiben.
quelle
Die Erleichterung einer ordnungsgemäßen Verschlechterung ist nur einer der vielen Faktoren, die unauffälliges JavaScript zu einer attraktiven Wahl machen, und meiner Meinung nach ist es nicht der wichtigste.
Aus persönlicher Erfahrung würde ich sagen, dass, wenn Sie über ein größeres Projekt sprechen, das sich wahrscheinlich im Laufe der Zeit stark weiterentwickelt, die Verwendung eines unauffälligen Stils die Wartung, das Debuggen und das Refactor der Anwendung erheblich erleichtert. Dies ist der Hauptgrund, warum wir immer einen unauffälligen Stil verwenden, selbst auf Websites, auf denen JavaScript für alle Besucher aktiviert werden muss.
quelle
Wenn Sie eine traditionelle "Website" entwickeln, die anonym verfügbar ist, von Suchmaschinen indiziert wird und bei der Einnahmen durch Anzeigen generiert werden, sollten Sie im Allgemeinen eine angemessene Verschlechterung erzielen. Die Idee ist, dass diese Art von Website durch Barrierefreiheit lebt und stirbt. Wenn Sie also die Barrierefreiheit einschränken, verlieren Sie eine Menge Seitenaufrufe und damit Werbeeinnahmen.
Ein eingeschränkter Zugriff, im Allgemeinen nicht indizierbar und nicht auf Werbeeinnahmen basierende "Website" (Webanwendung), kann viel flexibler sein. Es kommt auf eine Entscheidung zwischen der Breite des Supports, der Tiefe der Funktionen und den Entwicklungskosten an. Stellen Sie sich vor, Sie entwickeln eine traditionelle Anwendung: Welche Plattform unterstützen Sie und welche Mindestanforderungen gelten? Wenn Sie nur eine Plattform und begrenzte Spezifikationen anstreben, können Sie sich darauf konzentrieren, ein überlegenes Produkt mit geringeren Entwicklungs- und Supportkosten auf Kosten des Verlusts potenzieller Marktanteile bereitzustellen.
Beispiel: Die Google-Suche ist eine Website. Google Text & Tabellen ist eine Webanwendung. Die Google-Suche ist ohne Schnickschnack und kann ohne JavaScript, CSS und / oder Bilder usw. identisch funktionieren. Sie funktioniert in Browsern im Textmodus genauso gut wie in den neuesten GUI-Browsern. Google Text & Tabellen funktioniert einfach nicht mit deaktiviertem JavaScript und wird nicht einmal ordnungsgemäß beeinträchtigt - nicht einmal eine Warnung zum Aktivieren von JavaScript.
quelle
Ich bevorzuge es, das meiste Layout und die Navigation in CSS zu erledigen. Ja, Lynx unterstützt es möglicherweise nicht, aber alle mir bekannten Browser mit vollem Funktionsumfang können es nicht deaktivieren. Dann kann JavaScript für auffälligere, aber nicht erforderliche Dinge verwendet werden. Zu diesem Zweck mag ich auch Ruby on Rails. Es kann viel von dem tun, was JavaScript für die Serverseite benötigt, solange Sie keine dynamischen Seitenaktualisierungen benötigen.
Zielgerichteter auf die Beantwortung der Frage: Ich mag kein benötigtes JavaScript, aber es gibt einen Business Case, in dem es erforderlich ist, wie ChrisF feststellte.
quelle
Javascript ist der Defecto-Standard, wenn es um dynamische Inhalte geht, die clientseitig bereitgestellt werden. Wenn sie kein JS haben, haben sie wahrscheinlich kein Silverlight.
Dann müssen Sie über Ihren Markt / Ihr Publikum nachdenken. Sind Sie programmers.stackexchcange oder bbc.co.uk/news? sehr unterschiedliche Zielgruppen.
quelle
Da Sie sich im Internet umschauen und auf vielen Websites "aufdringliches Javascript" sehen können, wird Ihre grundlegende Frage beantwortet. Ja, es ist in Ordnung, und viele beliebte Websites tun dies, sogar Google.
Wichtiger ist jedoch eine ordnungsgemäße Verschlechterung der Funktionalität. Auch wenn Sie darauf bestehen, dass für Ihre Benutzer Javascript aktiviert sein sollte, müssen Sie Nicht-JS-Benutzern ein angemessenes Maß an Erfahrung bieten, da sie sonst niemals bereitwillig zurückkehren.
quelle