2008-10-29 18 views
11

In der Render-Methode einer ASP.NET Web-Steuerung deaktiviert ist, muss ich die Ausgabe des Html auf der Grundlage ändern, ob JavaScript aktiviert oder deaktiviert ist auf dem Kunden-Browser,Erkennen Sie, wenn Sie JavaScript in ASP.NET

Kennt jemand die richtige Beschwörungsformel, um das herauszufinden?

Antwort

13

Das Problem mit Skript zu prüfen, ob Javascript aktiviert ist, ist, dass Sie nur das herausfinden, nachdem das Skript nicht ausgeführt hat.

Einige Lösungen versuchen das Gegenteil - sie verwenden Javascript, um einen Wert festzulegen und dann Javascript-aktivierte Steuerelemente bereitzustellen, wenn dieser Wert später erkannt wird. Dies scheitert jedoch bei JavaScript-Tools, die manchmal aktiviert sind, wie das Firefox-NoScript-Plugin.

Eine robustere Lösung besteht darin, immer das Plain-HTML-kompatible Steuerelement zu senden und dann Javascript beim Laden der Seite ausführen zu lassen, um die richtigen Event-Handler/zusätzliche DOM-Elemente/etc hinzuzufügen.

Allerdings weiß ich nicht, wie das mit dem ASP.NET-Ansatz zu Kontrollen passt.

+0

Ich glaube, du hast recht, es ist wahrscheinlich besser, anzunehmen, dass JS ist deaktiviert und dann Skript ausführen, um die Elemente zu transformieren, wenn sie den Client erreichen. Danke. – Kieron

3

Das Tag noscript wird verwendet, um einen alternativen Inhalt (Text) zu definieren, wenn ein Skript NICHT ausgeführt wird.

EDIT: Hallo Kieron, werfen Sie einen Blick auf diesen Link: Creating a Server Control for JavaScript Testing und Detect if JavaScript is enabled in ASPX

+0

Ich war auf der Suche nach etwas mehr feinkörniger als das. Ich muss tatsächlich verschiedene Elemente rendern, wenn JS deaktiviert ist. z.B.

  • // JavaScript aktivieren, damit // JavaScript deaktiviert
Kieron

+0

+1 für den gleichen CP Artikel finden =) – StingyJack

0

Dies ist eine Möglichkeit zu überprüfen, wann ein Formular gesendet wird.

http://www.4guysfromrolla.com/webtech/082400-1.shtml

Ich glaube nicht, dass es eine Anfrage Eigenschaft ist, die Ihnen sagen, wenn die Seite zum ersten Mal angefordert wird. Es gibt eine Eigenschaft, die Ihnen sagen wird, ob der Browser JS unterstützt, aber nicht, wenn es aktiviert ist. See Here

3

Der Browser kommuniziert keine Javascript-Verfügbarkeit mit der Anfrage.

Eine Sache, die ich getan habe, obwohl ich nicht sicher bin, ob es in Ihrem Fall anwendbar ist, ist die Seite so zu generieren, als ob Javascript nicht aktiviert wäre. Dann haben Sie Javascript, das den HTML-Code ausschaltet und einschaltet das HTML-Javascript-Zeug.

Sie könnten auch die erste Seite drücken "Telefon nach Hause" über Javascript in der Sitzung aufzeichnen, ob Javascript aktiviert ist oder nicht.

+0

Leider kann JavaScript aktiviert oder deaktiviert werden, ohne die Cookies zu löschen, so dass die "Phone Home" -Methode nicht ausfallsicher ist. –

+0

@JanDvorak - einverstanden, das war nicht und wäre nicht meine erste Wahl. Ich würde denken, dass es im Allgemeinen ziemlich sicher ist, da Leute, die Javascript abschalten, es wahrscheinlich auslassen, anstatt sich mitten im Strom zu ändern, und wenn sie sich mitten im Strom ändern, erwarten sie wahrscheinlich merkwürdiges Verhalten. Defekte Skripts auf nachfolgenden Seiten sind ein anderes Problem. – tvanfosson

0

Was Sie tun müssen, ist dies. Nach vielen Tests und späten Nächten beschloss ich, die einfachste Lösung zu verwenden. Ziehen Sie eine Beschriftung oben auf die Seite und stellen Sie sicher, dass "run at server" lautet. Setzen Sie dann für das Text-Attribut Text = "Diese Website benötigt Javascript". Das sollte die beste Antwort sein. : D

Verwandte Themen