JavaScript Div verstecken wenn JS nicht aktiv

Berbatov

Rated R Superstar
ID: 208039
L
20 April 2006
3.979
192
Hey,

Ich habe ein <div>, dass auf Javascript basiert bzw. benutzt. Ist es möglich dieses div auszublenden, wenn JS nicht aktiv ist (da dass dann optisch und funktionstechnisch nicht mehr 100% funktioniert).
Ein Ausweichen von JS auf CSS damit es immer geht, ist ausgeschlossen.

MfG
 
Du könntest den DIV-Container standardmäßig mit CSS ausblenden (display:none) und dann per JS wieder aktivieren. So bleibt er ausgeblendet, wenn JS nicht aktiv ist.
 
Div auf display:none stellen, dann verschwindet es. Und wenn JS an ist, dann setzt du den Wert mittels JS auf display:block. Dann sollte es nur von denen gesehen werden, die JS aktiviert haben.
 
Es gibt auch ne andere Möglichkeit.
Man kann prüfen ob JS aktiv ist, wenn nicht, dann das Div garnicht erst in den Quellcode reinpacken und ausliefern !
 
Man kann prüfen ob JS aktiv ist, wenn nicht, dann das Div garnicht erst in den Quellcode reinpacken und ausliefern !
Und wie prüfst du das? :hö:

Und was meinst du mit "ausliefern"? Wenn es beim Client angekommen ist, ist es schon ausgeliefert. Egal, ob JavaScript an oder aus is.
 
Und wie prüfst du das?
Da gab es mal was, mit einem versteckten Formular das per form.submit() abgefeuert wird. Dadurch hatte man dann $_POST['js'] = 0 | 1.
Über Cookies ist man für solch einen Check auch schon gegangen. In jedem Fall ist aber ein Seitenreload notwendig, damit PHP damit arbeiten kann = Käse.

Richtig. Eine direkte Möglichkeit gibt es natürlich nicht :mrgreen:

Und was meinst du mit "ausliefern"? Wenn es beim Client angekommen ist, ist es schon ausgeliefert. Egal, ob JavaScript an oder aus is.
Erübrigt sich ja dann...wenn der Status in _POST oder _COOKIE steht, kann die Ausgabe ja "gesteuert" werden.

@TE:
Die beiden ersten Vorschläge!
Zusätzlich würde ich noch, je nach Menge an Javascripten, mittels <noscript>-Tag einen Hinweis ausgeben, dass JS für korrekte Seitenfunktion benötigt wird.

Gruß
 
Zuletzt bearbeitet:
Da gab es mal was, mit einem versteckten Formular das per form.submit() abgefeuert wird. Dadurch hatte man dann $_POST['js'] = 0 | 1.
Über Cookies ist man für solch einen Check auch schon gegangen. In jedem Fall ist aber ein Seitenreload notwendig, damit PHP damit arbeiten kann = Käse.
[...]
Erübrigt sich ja dann...wenn der Status in _POST oder _COOKIE steht, kann die Ausgabe ja "gesteuert" werden.
Läuft alles auf Serverseite und wir wissen überhaupt nicht, ob es seitens des Threaderstellers überhaupt eine Serverseite gibt und falls ja, was da läuft.

Da JavaScript komplett auf Clientseite läuft, bringt es imo überhaupt nix, wild mit dem Server zu plaudern. Der weiß ja auch ned mehr. Alle Tests müssen logischerweise auf dem Client - also in JavaScript selber - gemacht werden.

Und im Prinzip läuft es immer so, dass du was in JavaScript ausführst und wenn sich was tut, hast du JavaScript. Wenn nicht, hast du es nicht.
Zusätzlich hast du in XHTML den <noscript>-Tag, um aus Prinzip schon mal zu sagen "Falls kein JavaScript da is, zeig bitte das da".


Für Entwicklung mit JavaScript bietet sich immer an, erst alles so zu machen, als wenn es kein JavaScript gäbe und dann im Nachhinein das JavaScript einzufügen. Und da dann direkt die Funktionalität von JavaScript selber einfügen lassen (DOM: createElement() & Co).
Is JavaScript da, "verbessert" sich Webseite von selbst. Ohne JavaScript bleibt sie so, wie sie war.
 
Wenn ihr ein Element mit display: none; „ausstattet“, wird es nur nicht mehr visuell vom Browser ausgegeben, steht aber dennoch im Quelltext und wird folglich auch von Screenreadern ausgegeben.

Also: noscript-Element (whatwg, w3) verwenden.

Edit: Sorry, hatte den Thread irgendwie schon ewig in einem Tab liegen. :ugly:
 
Noch eine Möglichkeit:
document.write("<div>Hallo Welt!<\/div>");
Diese Möglichkeit ist aber nicht dem Standard entsprechend, sollte also nicht benutzt werden.

Änderungen am Document sind ausschließlich über die entsprechenden DOM-Methoden vorzunehmen.
 
document ist aber die DOM-Wurzel ;)
Das "Document" war jetzt nicht wörtlich zu nehmen. Sch*** Anglizismen immer :wall: :biggrin:

Da rum gings:
Does document.write work in XHTML?

No. Because of the way XML is defined, it is not possible to do tricks like this, where markup is generated by scripting while the parser is still parsing the markup.
You can still achieve the same effects, but you have to do it by using the DOM to add and delete elements.
Quelle: https://www.w3.org/MarkUp/2004/xhtml-faq#docwrite
 
Ein Test ob JavaScript Aktiv ist, kann man mittels einem Test machen.
Es wird eine Seite ausgeliefert, die in einem <script ... /script> part an den Server eine bestimmte Meldung gibt. Erfolgt diese nicht innerhalb von einer gewissen Zeitspanne, kann man davon ausgehen, es gibt kein aktives JS.
 
Es wird eine Seite ausgeliefert, die in einem <script ... /script> part an den Server eine bestimmte Meldung gibt. Erfolgt diese nicht innerhalb von einer gewissen Zeitspanne, kann man davon ausgehen, es gibt kein aktives JS.
Bei ner lahmen Internetverbindung oder wenn dieser Request geblockt wird, funktioniert die Erkennung aber nicht.
Und selbst dann brauchst du wieder einen Server, der das ganze verarbeitet. Der ist nicht in jedem Fall gegeben.

Und selbst wenn dein Test funktioniert: Dann weiß der Server "Ah, Client hat kein JavaScript". Und dann? Dann lieferst du wohl in Zukunft nur noch geänderte Seiten ohne JavaScript aus. Aktiviert der Client sein JavaScript nachträglich, guckt der Benutzer in den Mond.

Drum: Keine komischen Servermätzchen machen. Keine ominösen Tests. Einfach die Seite so schreiben, dass sie sowohl ohne JavaScript läuft ohne dabei wichtige Funktionen zu verlieren, als auch mit JavaScript läuft.
 
Zuletzt bearbeitet: