Domino 9 und frühere Versionen > ND6: Entwicklung
JavaScript im Web / Keyword Refresh - Hidewhen Refresh
HarryB:
Hi Folks,
Domino setzt Keyword Felder, die ein Refresh beim ändern des Keywords auslösen so um, dass ein Standard Javascript mit der Maska geladen wird, mit der Funktion "_doClick". In dem entsprechenden Keyword Feld gibt es dann einen onChange Event, der dieses _doClick aufruft. Die Funktion sieht aus wie folgt:
--- Code: ---<script language="JavaScript" type="text/javascript">
<!--
document._domino_target = "_self";
function _doClick(v, o, t, h) {
var form = document._researchActivity;
if (form.onsubmit) {
var retVal = form.onsubmit();
if (typeof retVal == "boolean" && retVal == false)
return false;
}
var target = document._domino_target;
if (o.href != null) {
if (o.target != null)
target = o.target;
} else {
if (t != null)
target = t;
}
form.target = target;
form.__Click.value = v;
if (h != null)
form.action += h;
form.submit();
return false;
}
// -->
</script>
--- Ende Code ---
Die Bedeutung der Parameter:
v ist der Name des Formulars, welches abgeschickt wird (in der Regel "$Refresh")
o ist das Quelldokument (this)
t ist das Target ("_self")
h ist die Formaction, die beim Keyword Refresh so aufgebaut ist: "#_RefreshKW_name"
"name" in "#_RefreshKW__name" ist der Name des Keyword Feldes, dem ein Underscore "_" vorangestellt wird. Die eigentliche auslösende Funktion ist das "_RefreshKW" was vermutlich "Refresh Keywords" heisst.
Meine Frage dazu: ist diese Funktion irgendwo dokumentiert? In der Notes Hilfe jedenfalls nicht. Gibt es eine äquivalente Funktion auch für Hidewhen Formeln, vielleicht "_RefreshHW" oder so?
Viele Grüße
Harry
Marinero Atlántico:
--- Zitat von: HarryB am 06.01.05 - 11:57:23 ---Meine Frage dazu: ist diese Funktion irgendwo dokumentiert? In der Notes Hilfe jedenfalls nicht.
--- Ende Zitat ---
Das ist der code, den die Domino HTTP Engine erzeugt. Mehr Dokumentation als den code selber gibt es für Notes-Anwendungsentwickler meines Wissens nicht. Aber du hast es ja selbst herausgefunden.
--- Zitat von: HarryB am 06.01.05 - 11:57:23 ---Gibt es eine äquivalente Funktion auch für Hidewhen Formeln, vielleicht "_RefreshHW" oder so?
--- Ende Zitat ---
Nein. Meiner Ansicht nach kann es das auch gar nicht geben. Hidden Bereiche in einer Maske werden gar nicht an den Client geschickt.
Sonst müsste es im html quellcode der Seite sowas geben wie:
--- Code: ---<field name="xxxx" value="1111" visibility="hidden">
--- Ende Code ---
Durch das Hidden feature von Notes versteckte Bereiche werden aber wie gesagt gar nicht als HTML an den Client gesendet.
Eine neu-Berechnung der hide-when-Formeln genötigt deshalb immer einen neuen Roundtrip gegen den Server. Clientseitiges JavaScript reicht dafür aus obigen Gründen nicht aus.
korrigiert mich, wenn ich falsch liege
Axel
HarryB:
--- Zitat von: Marinero Atlántico am 06.01.05 - 12:49:31 ---Nein. Meiner Ansicht nach kann es das auch gar nicht geben. Hidden Bereiche in einer Maske werden gar nicht an den Client geschickt.
Sonst müsste es im html quellcode der Seite sowas geben wie:
--- Code: ---<field name="xxxx" value="1111" visibility="hidden">
--- Ende Code ---
--- Ende Zitat ---
Meinst du sowas?
<input name="feld1" type="hidden" value="">
Mit der Maskeneingenschaft "generate HTML for all fields" kein Problem.
--- Zitat von: Marinero Atlántico am 06.01.05 - 12:49:31 ---Durch das Hidden feature von Notes versteckte Bereiche werden aber wie gesagt gar nicht als HTML an den Client gesendet.
Eine neu-Berechnung der hide-when-Formeln genötigt deshalb immer einen neuen Roundtrip gegen den Server. Clientseitiges JavaScript reicht dafür aus obigen Gründen nicht aus.
korrigiert mich, wenn ich falsch liege
Axel
--- Ende Zitat ---
Wie gesagt, Felder kannst du sehr wohl an den Client schicken.
Davon abgesehen wird durch den Eingangs zitierten Code ein "roundtrip" gegen des Server ausgelöst. Bitte beachte, dass die submit() Methode explizit aufgerufen wird. Genau das ist ja auch das, was ich machen will: den Server veranlassen unter geänderten Voraussetzungen das Dokument neu zu laden.
Viele Grüße
Harry
Marinero Atlántico:
--- Zitat von: HarryB am 06.01.05 - 13:14:12 ---
Meinst du sowas?
<input name="feld1" type="hidden" value="">
Mit der Maskeneingenschaft "generate HTML for all fields" kein Problem.
--- Ende Zitat ---
Das kenne ich. Ich meinte, wenn du einen Textbereich oder ein Feld über die Eigenschaftenbox in Notes verbirgst, hast du im von der http-Engine generierten code keine Möglichkeit das dort, wo es per Gestaltung der Maske eigentlich stehen sollte, sichtbar zu machen.
--- Zitat von: HarryB am 06.01.05 - 13:14:12 ---Davon abgesehen wird durch den Eingangs zitierten Code ein "roundtrip" gegen des Server ausgelöst. Bitte beachte, dass die submit() Methode explizit aufgerufen wird. Genau das ist ja auch das, was ich machen will: den Server veranlassen unter geänderten Voraussetzungen das Dokument neu zu laden.
--- Ende Zitat ---
Submit gegen ein WebQuerySave Agent, der den User dann auf das selbe Dokument zurückleitet, sollte funktionieren.
HarryB:
--- Zitat von: Marinero Atlántico am 06.01.05 - 13:25:00 ---Das kenne ich. Ich meinte, wenn du einen Textbereich oder ein Feld über die Eigenschaftenbox in Notes verbirgst, hast du im von der http-Engine generierten code keine Möglichkeit das dort, wo es per Gestaltung der Maske eigentlich stehen sollte, sichtbar zu machen.
--- Ende Zitat ---
Ah, jetzt ja. Das ist soweit klar, stellt aber auch kein Problem dar.
Viele Grüße
Harry
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln