Global auf MemberVariable einer Funktion zugreifen

Hallo,

Ich möchte den Wert einer Variable auslesen, die in einer Funktion definiert wurde.

Beispiel:

Es gibt die Funktion viewDetailImage:

function viewDetailImage(ImageId)
{
 var senderId = 1;
 var galId = 12299;
 var hiddenValue = '#ctl15\_ctl00\_libHiddenImages';
 ...
}

Weiter später im Code möchte ich den Wert von galId und hiddenValue auslesen. Ich brauche die Inhalte der Variablen global.

Hintergrund ist der, dass ich eine Seitenmanipulation/ Erweiterung (Greasemonkey-Script) für eine bestimmte Webseite schreibe. Nachdem die Seite geladen ist, wird mein Greasemonkey-Script ausgeführt. Ich tue dann den DOM manipulieren, Event-Handler setzten oder Funktionen überschreiben.
Für bestimmte Aktionen, brauche ich „galId“ und „hiddenValue“. Da diese Werte aber dynamisch sind, muss ich diese irgendwie bestimmen.

Folgendes habe ich versucht:

alert(unsafeWindow.viewDetailImage.hiddenValue)

Aber leider ist das „undefined“. („unsafeWindow“ enspricht „window“)

Gibt es irgendwie eine Möglichkeit an diesen Wert zu kommen, außer den Quelltext manuell durchzuparsen?

Freundliche Grüße
Peter

Hallo,

Ich möchte den Wert einer Variable auslesen, die in einer
Funktion definiert wurde.

Ich glaub das ist der Sinn einer Member Variablen, sie nicht global sichtbar zu machen.
Das Sicherheitskonzept wäre ja sonst Fehlerhaft.

Freundliche Grüße
Peter

Ich glaub das ist der Sinn einer Member Variablen, sie nicht
global sichtbar zu machen.
Das Sicherheitskonzept wäre ja sonst Fehlerhaft.

Eigentlich gibt es in JS keine richtigen Member-Variablen und keine public/ private-Direktiven.

Mich interessiert ja eigentlich auch nicht der Wert, sondern ich will nur wissen, was im Quelltext hinter dem „=“ zugewiesen wird, da dieser Wert serverseitig gesetzt (sieht nach ASP.NET-Server aus) wird und der sich ab und zu ändert.

Ich suche ja nach irgendeiner möglichen Lösung. Vllt. kann man die Variable mit einem Event-Handler überwachen… Im Worst-Case muss ich leiden den Quellcode parsen und mir den Wert so beschaffen.

Sackgasse
Hi,

natürlich gibt es diese „public/private-Direktiven“, die heißen nur nicht so, sondern statt „private“ schreibt man „var“ innerhalb einer Funktion, und schon ist die Variable „private“.

Ums Parsen wirst Du wohl nicht herumkommen.

Schöne Grüße,

Mohamed.