Inside Oracle APEX auf Deutsch (von Patrick Wolf)

Leicht unterschiedliches Verhalten von $x in Oracle APEX 3.0

Bin gerade auf ein leicht unterschiedliches Verhalten von $x in Oracle APEX 3.0 gestoßen.

Ich nehme mal an, dass viele von Euch immer nur einen ID-String eines Elements (zB: $x("P4_TEST")) beim Aufruf dieser Funktion übergeben um das Objekt dieses Feldes/Divs/...-ID's zu bekommen, aber man kann diese Funktion auch mit einem Objekt aufrufen, in diesem Fall wird einfach das gleiche Objekt wieder zurückgegeben.

Jetzt werdet Ihr Euch fragen wozu braucht man soetwas? Man braucht es, wenn man den JavaScript Code ein wenig allgemeiner schreibt, zum Beispiel folgende Funktion
function getWhatEver(pField)
{
var vField = $x(pField);
// do what ever we want with vField
};
Wenn der Aufrufer bereits ein Feld Objekt hat, dann kann er bereits das Objekt übergeben und die Funktion muss nicht nochmal eine Suche mit der ID durchführen.
getWhatEver(vFieldVariable);
Wenn der Aufrufer noch kein Objekt des Feldes hat, dann kann er die Routine einfach mit dem ID-String aufrufen
getWhatEver("P4_TEST");
und die $x Funktion wird automatisch die notwendige Suche durchführen.

Das oben beschriebene Verhalten funktioniert noch immer für Objekte vom Node Typ 1 (Node.ELEMENTNODE), aber mit Oracle APEX 3.0 funktioniert es nicht mehr, wenn zB das window Objekt übergeben wird, in diesem Fall retourniert die $x Funktion false.

Ich hatte eine Funktion mit der man Ereignisse (zB: onkeypress, ...) zu jedem beliebigen Objekt hinzufügen konnte, aber mit APEX 3.0 hat die Funktion auf einmal nicht mehr funktioniert wenn Sie mit dem window Objekt aufgerufen wurde.

Eventuell habt Ihr in Eurem Code ja auch so etwas und spart mit diesem Tipp ein paar Minuten der Fehlersuche.

Labels: , , ,