Laden...

Clientbrowser ist Javascript aktiviert/deaktiviert?

Erstellt von domianer vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.758 Views
Hinweis von gfoidl vor 13 Jahren

Titel angepasst und verschoben. Urpsrünglich war "Ueberpruefen, ob eine Funktion ausgefuehrt wurde" im Forum Basistechnoloigen. Von daher ist die 1. Antwort für die geänderte Frage irrelevant.
Richtig "los gehts" hier

D
domianer Themenstarter:in
6 Beiträge seit 2010
vor 13 Jahren
Clientbrowser ist Javascript aktiviert/deaktiviert?

Hallo,

Ich moechte ueberpruefen, ob eine Funktion ausgefuehrt wurde. Normalerweise kann man als Loesung einen Workaround basteln, indem man eine globale bool Variable erstellt und diese in der Funktionsimplementierung selbst auf true setzt, jedoch habe ich in diesem Fall kein Zugriff auf die Implementierung.

Gibt es eine andere Moeglichkeit zu ueberpruefen ob eine Funktion ausgefuehrt wurde?? Vielleicht eine Methode?

Danke schoneinmal im Voraus.

Gruesse Domi

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

vorab: Bezüglich der Bezeichnung "Funktion" und "Methode" siehe Unterschied Methoden / Funktionen

Zum Thema:
Schau dir mal dieses Beispiel an:


static void Main(string[] args)
{
	Foo();
			
	// wenn der folgende Code ausgeführt wird so wurde Foo ausgeführt
}

private static void Foo()
{
	//
}

Wird Foo ausgeführt und trat dabei keine Exception auf so wird der dem Kommentar folgende Code auch ausgeführt. Im Exception-Fall wird dieser nicht ausgeführt da die Exception nicht behandelt wird. Ist es das worauf du hinaus bist?

Wenn du jedoch eher eine Art Profiler meinst dann funktionieren diese afaik dadurch dass im IL-Code "Marker" injiziert werden welche darüber aufschluss geben.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

D
domianer Themenstarter:in
6 Beiträge seit 2010
vor 13 Jahren

Danke fuer deine Antwort.. Ich glaube meine Frage war etwas missverstaendlich. Mein Problem ist folgendes:
Ich moechte erkennen ob der Clientbrowser Javascript aktiviert/deaktiviert hat (nicht ob er JS-faehig ist).

Mein angenommener Fall JS ist aktiv:

Wenn ich auf meiner Webseite auf den Menuepunkt "bla" druecke, ufnktuioniert alles wunderbar, er geht wie unten gezeigt in die Page_Load Methode hinein, checkt ob die Session existiert, diese existiert beim ersten mal noch nicht, also geht er in die erste if-Verzweigung hinein und setzt die Session Variable und einen String names path, welchen er versucht mit RegisterStartupScript an die Url des Clienten zu haengen..Passiert dies erfolgreich, weiss man das Javascript beim Clienten aktiv ist und er springt an die Stelle, in der der Code fuer aktiviertes JS steht. Wird die URL nicht erfolgreich gebildet, springt er an die Stelle ohne JS.

Wenn ich es das allererste mal ausfuehre, geht alles wunderbar. Wenn ich allerdings danach auf einen anderen Menuepunkt klicke und dann wieder auf "bla" ist die URL wieder normal...er geht jedoch nicht in die erste if, da die session variable existiert und geht dann gleich in den Teil, in dem JS deaktiviert ist, weil ja die URL mit ?JScript=1 nicht existiert, obwohl JS aktiv ist.

Entweder stehe ich auf dem Schlauch...oder weiss auch nicht 😃 ICh komm einfach nicht drauf..

protected void Page_Load(object sender, EventArgs e)
        {
            // Checks if the client browser has activated Javascript or not.
            if (Session["JSChecked"] == null)
            //JSChecked -indicates if it tried to run the javascript version
            {
                // prevent infinite loop
                Session["JSChecked"] = "Checked";
                string path = Request.Url + "?JScript=1";
                Page.ClientScript.RegisterStartupScript(this.GetType(), "redirect", "window.location.href='" + path + "';", true);
            }
            if (Request.QueryString["JScript"] == null)
            {
                //JavaScript is NOT enabled

                ....
            }
            else
            {
                //JavaScript is enabled

                ....
            }
}

Vielen Dank im Voraus

Dominik

S
902 Beiträge seit 2007
vor 13 Jahren

Hallo,

bei dir ist wohl nur ein Logikproblem, du musst im einfachsten falle nochmal die session abfragen, in deinem zweiten if.

mfg
serial

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

serial hat recht - ein Logikproblem.
Du musst in der Session nicht speichern, ob Du geprüft hast, sondern das Ergebnis der Prüfung, also etwa so (nicht getestet):

protected void Page_Load(object sender, EventArgs e)
{
  // Checks if the client browser has activated Javascript or not.
  if (Session["JSEnabled"] == null)
  {
    string path = Request.Url + "?JScript=1";
    Page.ClientScript.RegisterStartupScript(this.GetType(), "redirect", "window.location.href='" + path + "';", true);

    // Assign a value to the Session to prevent infinite loop
    Session["JSEnabled"] = false;
  }
  else if (Request.QueryString["JScript"] != null)
  {
    // set the value to true if the Browser has executed the Script
    Session["JSEnabled"] = true;
  }

  if((bool)Session["JSEnabled"])
  {
    //JavaScript is enabled
  }
  else
  {
    //JavaScript is NOT enabled, or we don't know yet (first run)
  }
}

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

D
domianer Themenstarter:in
6 Beiträge seit 2010
vor 13 Jahren

Hey : )

Dankeschoen!! So funktioniert es. Das schein logisch!!

Gruesse Domi