Domino 9 und frühere Versionen > ND6: Entwicklung
Script Librarie Routine per Javascript aufrufen
Marinero Atlántico:
... vor allem könntest du dir auch mal Gedanken darüber machen, wie Browser und Notesserver eigentlich miteinander kommunizieren.
NotesServer --> Browser
Ein (oder mehrere) NotesElemente (Maske, Dokument, View, Page, Page mit embedded View wird stets von der Notes-httpEngine auf dem Server in ein HTML(oder XML)-Dokument umgesetzt und an den Browser geschickt. Der Browser zeigt das dann an.
Browser --> NotesServer
Der Browser kann an den NotesServer stets nur Nachrichten im http(s) Format schicken (es sei denn du verwendest plug-ins für Applets oder Swing).
In HTTP gibt es gebau 2 wichtige Befehle:
HTTP-GET: Anforderung einer Ressource über eine URL
HTTP-POST: Nachricht an Ressource mit key-value pairs und gegebenenfalls Attachments.
Das läuft nicht so direkt, dass du direkt vom Browser NotesObjekte ansprichst.
hoffe es hilft
Axel
Phate:
Wie ist es denn möglich einen Agenten per javascript aufzurufen? Damit wäre mein Problem gelöst. Aber ich weiß nur wie es per Formula oder Lotusscript oder Java geht.
Außerdem müste ich dem Agenten beim aufruf auch noch einen Parameter übergeben.
Marinero Atlántico:
Phate,
hast du versucht diese JavaScript eine Weile zu vergessen und einen Button in die Page zu tun und dahinter die Formelsprachenbefehle:
--- Code: ---@Command([FileSave]);
@PostedCommand([FileCloseWindow]);
--- Ende Code ---
Vorher kannst du noch eine Ansicht mit @All als Selektionsformel (oder wie das noch mal hies).
Auf diesen Button klicken und dann in die Ansicht schauen?
Du brauchst für diese Aufgabe kein JavaScript.
JavaScript ist überhaupt nicht dafür da um mit dem Server zu kommunizieren.
JavaScript ist dafür da, um die Objekte der Objektrepräsentation des (oder der) html Dokuments(e) zu manipulieren, das (die) im Browser ist (sind).
Gruß Axel
Marinero Atlántico:
<ich_meine_das_Gesagte_nicht_böse_oder_arrogant/>
O.k. die Geschmäcker sind verschieden. Menschen haben die seltsamsten Obsessionen ;D
Falls dir die Benutzung von JavaScript für diese Aufgabe eine Befriedigung verschafft (obwohl es eigentlich nicht hier hingehört).
Du kannst einen Button da hintun und in das onClick()-Event:
<script>document.forms[0].submit();</script>
Das macht aber wie gesagt eigentlich dasselbe wie ein normaler html Submit button (der automatisch generiert wird, wenn obige Formeln dahinterstehen.
Falls du unbedingt einen Agenten aufrufen willst, kannst du sowas machen. In PassThruHtml:
<a href="/computedText mit Formel: @Subset(@Substring(@dbName();"\\";"/");-1) /nameDesAgenten?openAgent">Agenten aufrufen</a>
Parameter könntest du hinter openAgent mit & anhängen.
Es ist aber viel besser den Agenten in das WebQuerySave Kästchen zu schreiben. Such nach WebQuerySave in der Designerhilfe.
An das aufrufende Dokument kommst du über
--- Code: ---Dim session as new NotesSession
Dim doc As NotesDocument
set doc = session.getDocumentContext()
[/url]
Aus diesem doc kannst du alle Parameter auslesen. Ich halte das für die sauberste Lösung, wenn du einen Agenten brauchst.
Gruß Axel
--- Ende Code ---
datenbanken24:
Es gibt schon eine ganze Menge Anwendungsfälle, wo es Sinn macht, einen Agenten per JavaScript aufzurufen, auch ohne ständig zu "Submitten" und WQSave und WQOpen zu nutzen.
Zb:
- Felder füllen in einem geöffneten Webformular mit einer analogen Picklist wie in Notes
- Schnellsuche in Ansichten
- Starten von Agenten im Server-Background
- On-the-fly-Erweiterung von Schlüsselwortlisten
- etc.
Den Agenten rufst Du auf wie jedes andere Notes-Element
"agentenname?openagent"
z.B. in einem "window.open" (mit html rückgabewert)
oder versteckt in einem <img src="agentname?openagent"> mit einem Bild als rückgabewert (unsichtbar)
Parameter hängst Du mit "¶meter1=x¶meter2=y" an.
Die liest Du wieder aus (auch wenn es kein explizites Document gibt) in LS über:
Set Document = Session.DocumentContext
string = Document.QUERY_STRING_DECODED(0)
Den String explodierst Du am "&" und replacet diese Liste mit Word am Parametername - schon hast Du jeden und so viele Parameter wie Du möchtest übergeben.
Wichtig ist dabei nur, dass die Parameter selbst nur Zeichen enthalten dürfen, die über eine URL übertragbar sind.
Du mußt also möglicherweise die Parameter in Javascript encoden und in LS wieder decoden mit einer Übersetzungsliste wie z.B die hier:
( " " : "\"" : "&" : "|" : "(" : ")" : "ü" : "ä" : "ö" : "ß" : "?" : ":" : "Ä" : "Ö" : "Ü" : "," : "\'" ) ;
( "%20" : "%22" : "%20AND%20" : "%20OR%20" : "%28" : "%29" : "%FC" : "%E4" : "%F6" : "%DF" : "%3F" : "%3A" : "%C4" : "%D6" : "%DC" : "%2C" : "%27" )
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln