Domino 9 und frühere Versionen > ND6: Entwicklung
Script Librarie Routine per Javascript aufrufen
Marinero Atlántico:
Deine "JavaScript" Aufrufe betreffen aber jeweils ein ganz eigenständiges Html-Dokument (window.open()) oder ein eingebettetes Grafikelement (<img> tag).
Ich bin hier deshalb so drauf eingestiegen, da aus meiner Sicht ein irgendwie grundsätzlicher Mangel an Verständnis für http bestand. Davor kann ich nur warnen.
Vor diesen Austauschlisten kann ich auch nur warnen. Es gibt in JavaScript und innerhalb von Lotus in CGI Variablen die Möglichkeit einen String automatisch urlencoded zu machen. Das heisst die Funktion kümmert sich darum.
Gruß Axel
datenbanken24:
Das stimmt.
Wir nutzen die Translations auch nur, wenn wir neue URLs in @Formeln zusammenbauen, deshlab auch der Ausschnitt aus einem @ReplaceSubstring-Befehl.
Auch mit dem HTML gebe ich Dir vollkommen recht.
In 90% der Fälle ist immer ein WQSave oder ein WQOpen sinnvoller, meist sogar in Verbindung mit einem SaveOptions="0".
Aber ab und zu ist so ein Agentenaufruf aus JS doch ganz interessant.
So habe ich das auch gemeint
Marinero Atlántico:
nein. nein. nein.
Das ist mir zu Unscharf.
Zwischen dem JavaScript und dem Agenten sind mindestens 2 Layer von anderem Zeug. Deshalb ist der Ausdruck JavaScript Aufruf eines Agenten extrem problematisch (für mich jedenfalls).
JavaScript ist eine SkriptSprache für den Browser. Mehr nicht. Man kann da also aus JavaScript unmittelbar keine remote calls auf Notes Gestaltungselemente ausführen.
Man kann höchstens mit JavaScript den Browser instruieren gegen den Domino Server einen http-Aufruf zu starten, der die Domino Web Engine (?) dazu veranlasst einen Agenten aufzurufen, dessen Ergebnis wiederum an den Browser zurückgesendet wird.
Bei window.open(url, stuff) passiert folgendes:
Browser öffnet ein Pop-Up Fenster.
Unmittelbar nach dem Öffnen sendet dieses PopUp Fenster ein http-GET gegen den Domino Server, der dort bewirkt, dass ein Agent gestartet wird.
<img url="/pfad/database.nsf?openAgent"> hat mit JavaScript nix zu tun. Das ist reines html.
Ich klinge vermutlich ein bischen fanatisch. Ich halte nur wie gesagt so Aussagen wie "aus JavaScript einen LotusScript Agenten" aufzurufen für extrem irreführend, für meine Ohren jedenfalls.
Axel
Phate:
OK OK,
Ich merke das der Aufruf eines Agenten über Javascript wahrscheinlich der falsche Weg für mein Problem ist. Eigentlich müsste es dafür nämlich eine einfache Lösung geben.
Daher werde ich mein Problem einmal als ganzes beschreiben. Vorher möchte ich noch sagen das ich von diesem Forum begeistert bin, es ist das erste mal das ich etwas hier poste aber ich habe schon gemerkt das es hier Leute gibt die wirklich Ahnung haben.
Also folgendermaßen, ich habe eine Form die aus einem Eingabefeld und einem Sendebutton besteht, ich habe diese Form selbst in HTML geschrieben, es hilft mir gar nichts wenn mir jemad vorschlägt ich solle mit Notes eine Form erstellen so das es automatisch als HTML document gerendert wird.
Das ganze sieht so aus
dxemailenterform="<form method=""get"" id=""emailenterform"" name=""emailenterform"" action=""javascript:enteremail();"">"&_
configdoc.email_enter_form_label(0) & _
"<input type=""text"" id=""emailenter"" name=""emailenter"" />"&_
configdoc.email_enter_form_submit_button(0) & "</form>"
die action enteremail war dafür gedacht die Eingabe zu überprüfen und einzutragen.
so außerdem habe ich im Designer eine Form (newEmail) erstellt in der man eine Emailadresse eingeben kann. Nun möchte ich gerne, dass wenn ein User im Web in dem Eingabefeld seine Emailadresse eingibt und auf senden klickt ein neues Document von der Form newEmail erzeugt die Emailadresse in das Feld emailadresse eingetragen wird und das ganze gespeichert wird.
Ich hoffe ihr könnt nachvollziehen was ich möchte. Ich könnte mir vorstellen das es mit einem URL Command gehen könnte allerdings weiß ich nicht so genau wo ich dieses dann anbringen muss, wie ich es aufrufe und wie ich es genau zusammensetze.
Marinero Atlántico:
Sorry, aber das ist sehr merkwürdig, was du da sagst.
Wie willst du den String dxemailenterform an den Browser senden?
Ich würde in die action property des form-elements keine JavaScript Funktion schreiben, sondern die Target-URL
--> http://derServername/pfad/dbname.nsf/agent?openAgent <---
Die Validierung dann in einem Validierungsskript, dass im Event-handler onSubmit des form Elements steht.
Im Agenten kannst du es dann mit
Dim docContext as NotesDocument
Dim session as NotesSession
dim decodedUrlQuery As String
session = new NotesSession();
docContext = session.getDocumentContext();
decodedUrlQuery = docContext.getItemValue("Query_String_Decoded")(0)
print "decodedUrlQuery=" + decodedUrlQuery
versuchen.
Du erzeugst die html-form mit einem Agenten. Warum?
Es ist vermutlich viel einfacher, das mit einer Notes-Form zu machen. Domino kümmert sich um die html-generierung. Du kannst das auch soweit mit css beeinflussen, dass es gut aussieht.
Ausserdem finde ich diese doppelten "" unübersichtlich. Ist vielleicht Geschmackssache.
Du kannst in LotusScript aber auch ein pipe-Zeichen als äußeren String-Delimiter verwenden.
Also:
dxemailenterform=|<form method="GET" id="emailenterform" name="emailenterform" action="http://derServername/pfad/dbname.nsf/agent?openAgent" onSubmit="doValidationAndStuff();">|&_
wobei der serverServername natürlich nicht hartkodiert da reingehört. Aber das ist eigentlich schon das nächste Thema.
'Gruß Axel
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln