Hallo,
ich möchte eine Oberfläche erstellen wo ich via Klick bestimme Routinen in einem Modul starten kann.
In meinem HTML Code habe ich eine Variable welche ich mit dem Code fülle.
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung()}&XHR=1\')\" value=\"Text\" %s/>";
Mit diesem Code springe ich direkt in meine Routine.
Nun würde ich gern aber dieser Routine mit Variablen übergeben und erziele kein Erfolg bisher.
Gedanklich müsste es ja so werden
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(Tag,Daten)}&XHR=1\')\" value=\"Text\" %s/>";
Leider geht dies nicht und ich erhalte Barewords ... strict subs
Bitte um Mithilfe ???
MfG
EDIT Zusammenfassung vom Faden was kein Erfolg brachte:
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung('".$var1."','".$var2."')}&XHR=1\')\" value=\"Text\" %s/>";
# -> SyntaxError: missing ) after argument list
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(1,\\\"123e4\\\")}&XHR=1\')\" value=\"Text\" %s/>";
# -> SyntaxError: '' literal not terminated before end of script
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(1,\"123e4\")}&XHR=1\')\" value=\"Text\" %s/>";
# -> string literal contains an unescaped line break
EDIT last:
Lösung auf der letzten Seite ;)
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(".$variableTag.",".$variableDaten.")}&XHR=1\')\" value=\"Text\" %s/>";
Oder Schritt für Schritt zur Erklärung:
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(";
$buttons .= $variableTag;
$buttons .= ",";
$buttons .= $variableDaten;
$buttons .= ")}&XHR=1\')\" value=\"Text\" %s/>";
Aber ich verstehe nicht ganz, warum du diesen Fehler kriegst. Dafür wäre die genaue Fehlermeldung hilfreich. Nw. zeigt Perl genau wo das Problem steht.
Ist vermutlich die die gleiche Meldung, was man kreigt, wenn man in FHEM
{Entleerung(Tag,Daten)}
eingibt.
Du meinst wegen Tag und Daten, oder wegen Leerzeichen vor und nach dem Fuktionsaufruf?
Zitat von: rudolfkoenig am 10 Mai 2019, 18:22:52
Ist vermutlich die die gleiche Meldung, was man kreigt, wenn man in FHEM
{Entleerung(Tag,Daten)}
eingibt.
Ja richtig, die Fehlermeldung.
Bareword "Tag" not allowed while "strict subs" in use at (eval 178572) line 1.
Bareword "Daten" not allowed while "strict subs" in use at (eval 178572) line 1.
Zitat von: amenomade am 10 Mai 2019, 18:26:59
Du meinst wegen Tag und Daten, oder wegen Leerzeichen vor und nach dem Fuktionsaufruf?
Ich meine den Funktionsaufruf damit die Variablen Tag und Daten übergeben werden können.
Wenn ich zum testen manuell in die Kommandozeile
{Entleerung('Tag')}
eingebe, so erhalte ich den Aufruf und die Übergabe.
Wenn ich dies aber in meine Zeile ergänze, so erhalte ich
fhem?detail=SIGNALduino_TOOL line 1:
SyntaxError: missing ) after argument list
Muss da etwas "anders" maskiert werden?
EDIT: geht nicht:
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung('Data')}&XHR=1\')\" value=\"update\" %s/>";
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(\'Data\')}&XHR=1\')\" value=\"update\" %s/>";
EDIT2:
WIESO geht das aber das nicht?
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd('/fhem?XHR=1&cmd.$name={Entleerung("."124".")}')\" value=\"update\" %s/>";
geht
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd('/fhem?XHR=1&cmd.$name={Entleerung("."abc".")}')\" value=\"update\" %s/>";
geht NICHT :o :'(
obwohl ich via Kommandozeile beides manuell übergeben kann?
@Rudi, hast du einen Tip diesbezüglich?
EDIT3:
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd('/fhem?XHR=1&cmd.$name={Entleerung(123e4)}')\" value=\"update\" %s/>";
führt im Code zu 1230000 >:( ???
Wäre gut wenn Du:
- das ganze zeigen würdest (und nicht nur eine Zeile von Code): wie sieht deine Funktion aus? Wo willst Du diese Zeile hinzufügen?
- die Fehlermeldungen bei jedem Versuch zeigen würdest. Du hast einmal von Barewords und einmal von "missing )" erwähnt. Was heisst jetzt "geht nicht" ?
Das $ vor name sollte noch escaped werden
Was ist übrigens $name
Hallo,
hier muss ein internet Fehler vorliegen welchen ich mit deinem Code nachvollziehen konnte.
Zitat von: amenomade am 10 Mai 2019, 17:45:07
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(".$variableTag.",".$variableDaten.")}&XHR=1\')\" value=\"Text\" %s/>";
Oder Schritt für Schritt zur Erklärung:
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(";
$buttons .= $variableTag;
$buttons .= ",";
$buttons .= $variableDaten;
$buttons .= ")}&XHR=1\')\" value=\"Text\" %s/>";
Aber ich verstehe nicht ganz, warum du diesen Fehler kriegst. Dafür wäre die genaue Fehlermeldung hilfreich. Nw. zeigt Perl genau wo das Problem steht.
Sobald ich anstatt Zahlen Buchstaben nehme kommt
2019.05.10 20:12:00 1: ERROR evaluating {Entleerung(2,egon)}: Bareword "egon" not allowed while "strict subs" in use at (eval 192471) line 1.
EDIT: CODE
my $variableTag = "1";
my $variableDaten = "ade";
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(".$variableTag.",".$variableDaten.")}&XHR=1\')\" value=\"Text\" %s/>";
FEHLER:2019.05.10 20:16:40 1: ERROR evaluating {Entleerung(1,ade)}: Bareword "ade" not allowed while "strict subs" in use at (eval 193248) line 1.
Soory, hatte die Variante mit namen= zum testen ersetzt mit Bsp aus dem Internet, daher weicht der Code ab oben. ::) Ich sehe dennoch nicht durch wo es zustande kommt.
EDIT TEST 2: my $variableTag = "1";
my $variableDaten = "\ade";
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(".$variableTag.",".$variableDaten.")}&XHR=1\')\" value=\"Text\" %s/>";
$ret .= "<tr> <td colspan=\"5\" rowspan=\"1\"> <div>$buttons</div> </td></tr>";
Fehler:2019.05.10 20:25:35 1: ERROR evaluating {Entleerung(1,de)}: Unrecognized character \x07; marked by <-- HERE after leerung(1,<-- HERE near column 15 at (eval 194646) line 1.
SEHR KOMISCH wenn ich den Test auch mit Zahlen + Buchstaben vornehme...
my $variableTag = "1";
my $variableDaten = "123a4";
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(".$variableTag.",".$variableDaten.")}&XHR=1\')\" value=\"Text\" %s/>";
$ret .= "<tr> <td colspan=\"5\" rowspan=\"1\"> <div>$buttons</div> </td></tr>";
}
$ret .="</tbody></table>";
Fehler:
2019.05.10 20:33:26 1: PERL WARNING: Bareword found where operator expected at (eval 195917) line 1, near "123a4"
2019.05.10 20:33:26 3: eval: {Entleerung(1,123a4)}
2019.05.10 20:33:26 1: PERL WARNING: (Missing operator before a4?)
2019.05.10 20:33:26 3: eval: {Entleerung(1,123a4)}
2019.05.10 20:33:26 1: ERROR evaluating {Entleerung(1,123a4)}: syntax error at (eval 195917) line 1, near "123a4"
Bei reinen Zahlen klappt es. Kann ich ggf noch wo anders mit "eingreifen" um den Fehler einzugrenzen?
Das ist nicht komisch, das ist normal. Es geht um Variabletypen und wie Perl damit umgeht, um etwas einen Typ zu geben.
Alle deine Fehler deuten auf dem Parameter womit du die Funktion Entleeren aufrufst.
2019.05.10 20:33:26 1: PERL WARNING: Bareword found where operator expected at (eval 195917) line 1, near "123a4"
2019.05.10 20:33:26 3: eval: {Entleerung(1,123a4)}
Er versucht 123a4 als Kalkulation zu verstehen, deswegen operator expected. Richtige Syntax wäre {Entleerung(1,"123a4")} damit er das als String versteht.
2019.05.10 20:12:00 1: ERROR evaluating {Entleerung(2,egon)}: Bareword "egon" not allowed while "strict subs" in use at (eval 192471) line 1.
Er versteht egon als Bareword, da die richtige Syntax {Entleerung(2,"egon")} sein sollte.
Genau das gleiche mit
2019.05.10 20:16:40 1: ERROR evaluating {Entleerung(1,ade)}: Bareword "ade" not allowed while "strict subs" in use at (eval 193248) line 1.
ZitatBei reinen Zahlen klappt es
Ja, weil ein Zahl... ein Zahl ist. Da braucht er nichts zu interpretieren
Also: hör auf wild zu testen, und denk mal nach. Wo sind deine Strings, wo fangen die an, wo enden sie, wie sind sie verschachtelt, mit welchen Deliminer (single oder double quotes), was wird escaped.
Wie soll das finale HTML Code aussehen?
Wenn deine Variable nicht immer numerisch sind, sondern auch alphanumerisch sein können, und es am Ende so aussehen muss:
<INPUT type="reset" onclick="FW_cmd(FW_root+'?cmd={Entleerung("1","123a4")}&XHR=1')" value="Text" %s/>
Dann sollte folgendes Code funktionieren:
{
$var1 = 1;
$var2 = "123a4";
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(\"".$var1."\",\"".$var2."\")}&XHR=1\')\" value=\"Text\" %s/>";;
}
Wenn var1 immer numerisch ist, kannst Du dir die enspr. escaped double quotes sparen. Musst aber nicht.
Zitat von: amenomade am 10 Mai 2019, 23:19:12
....
Dann sollte folgendes Code funktionieren:
{
$var1 = 1;
$var2 = "123a4";
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(\"".$var1."\",\"".$var2."\")}&XHR=1\')\" value=\"Text\" %s/>";;
}
Wenn var1 immer numerisch ist, kannst Du dir die enspr. escaped double quotes sparen. Musst aber nicht.
bringt mir folgendes
fhem?detail=SIGNALduino_TOOL line 1:
SyntaxError: '' string literal contains an unescaped line break
::) :'(
Kann man bitte ein "list SIGNALduino_TOOL" sehen?
Du hast immer noch nicht erwähnt WO Du dieses Code nutzen möchtest.
Zitat von: amenomade am 11 Mai 2019, 00:33:53
Kann man bitte ein "list SIGNALduino_TOOL" sehen?
Hier hast du das List von dem Modul wo ich es hereingenommen hatte zum testen.
Internals:
FUUID 5c44efd0-f33f-08a5-fbb9-57b647266a77e9ae
NAME SIGNALduino_TOOL
NR 561
NTFY_ORDER 50-SIGNALduino_TOOL
STATE RAWMSG dispatched
TYPE SIGNALduino_TOOL
Version 2019-05-09
dispatchDevice ABS700_79
dispatchDeviceTime 2019-05-11 00:33:22
dispatchOption from SD_Device_ProtocolList.json
dispatchSTATE T: 3.3
OLDREADINGS:
READINGS:
2019-05-11 00:33:22 cmd_raw D=110001001111000000111000001100000000
2019-05-11 00:33:22 cmd_sendMSG set sduino_dummy sendMSG s4F038300#R5
2019-05-11 00:33:22 decoded_Protocol_ID 0
2019-05-11 00:33:22 last_DMSG s4F038300
2019-05-11 00:33:22 last_MSG MS;P1=-7949;P2=492;P3=-1978;P4=-3970;D=21232423232424242423232323232324242423232323232424;CP=2;SP=1;R=245;O;
2019-05-11 00:33:22 message_dispatched 1
2019-05-11 00:33:22 message_to_module CUL_TCM97001
2019-05-11 00:33:22 state RAWMSG dispatched
helper:
NTFY_SEARCH_Time 2019-05-11 00:33:22
NTFY_SEARCH_Value s4F038300
Attributes:
DispatchMax 100
DispatchModule -
Dummyname sduino_dummy
Filename_export SIGNALduino_TOOL_output.txt
Filename_input SIGNALduino_TOOL_input.txt
Path ./SD_TOOL/
StartString MU;
cmdIcon START:remotecontrol/black_btn_PS3Start Dispatch_RAWMSG_last:remotecontrol/black_btn_BACKDroid
room SIGNALduino_un
userattr DispatchModule:-,CUL_EM,CUL_FHTTK,CUL_TCM.txt,CUL_TCM97001,CUL_TX,CUL_WS,Dooya,FHT,FLAMINGO,FS10,FS20,Hideki,IT,OREGON,RFXX10REC,SD_BELL,SD_BELL.txt,SD_Keeloq,SD_Keeloq.txt,SD_RSL.txt,SD_UT,SD_UT.txt,SD_Unknown.txt,SD_WS,SD_WS.txt,SD_WS07,SD_WS09,SD_WS_Maverick,SOMFY
verbose 3
webCmd START:Dispatch_RAWMSG_last
EDIT:
Ich habe nun das ganze mal fix in ein kleines Beispiel hereingenommen wo nur der Code drin ist.
Vielleicht kannst du da mal dies bei dir testen und somit die Umsetzung von mir nachempfinden wo der Fehler liegt bei mir.
Fehler wie bekannt:
fhem?detail=123 line 1:
SyntaxError: '' string literal contains an unescaped line break
ZitatDu hast immer noch nicht erwähnt WO Du dieses Code nutzen möchtest.
-> siehe Beispielcode im Anhang.
Im Voraus schon einmal danke 8)
Hallo,
@amenomade
Ich habe getestet und komme zu einem sehr komischen Verhalten was ich versuche herauszubekommen.
Wenn ich das BeiSpielModul welches ich hier nochmal anhänge, nutze, so klappt es.
Wenn ich diesen Code in mein anderes Modul einarbeite, so klappt dieser nur wenn ich "Zahlen" nutze obwohl die Zeile kopiert wurde.
Gibt es eine bestimmte Reihenfolge welche eingehalten werden muss oder wieso erhalte ich ausgerechnet dort dann den Fehler
Bareword "Modulname" not allowed while "strict subs" in use at (eval 898)
::) :o
Kann es durch Copy&Paste oder durch eine andere Funktion oder Funktionsaufruf dadurch gehindert werden?
EDIT:
SO soll es aussehn {Entleerung(1,"test")}
Da ist die Variante um Zahlen weiterzugeben
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(";
$buttons .= $var1;
$buttons .= ",";
$buttons .= $var2; # zahl
$buttons .= ")}&XHR=1\')\" value=\"update_Data\" %s/>";
Sobald ich nun Texte nutzen möchte, wäre doch nach deiner Aussage dies dazu zu nutzen:
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(";
$buttons .= $var1;
$buttons .= ","; ### Komma wie in Kommandozeile
$buttons .= "\""; ### maskierung
$buttons .= $var2; ### text
$buttons .= "\""; ### maskierung
$buttons .= ")}&XHR=1\')\" value=\"update_Data\" %s/>";
geht aber nicht leider!
SyntaxError: '' string literal contains an unescaped line break
EDIT 2:
Sobald ich irgendeine Maskierung in den Zeilen hinzufügen möchte kommt der Fehler. So im Anhang funktioniert er aber soabld ich Variable 2 als Text maskieren möchte schlägt es fehl.
my $var1 = 1;
my $var2 = 2;
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(";
$buttons .= $var1; # variable 1 Zahl
$buttons .= ","; # Trennung
$buttons .= ""; # eventuelles Zwischenzeichen - Maskierung
$buttons .= $var2; # variable 2
$buttons .= ""; # eventuelles Zwischenzeichen - Maskierung
$buttons .= ")}&XHR=1\')\" value=\"update_Data\" %s/>";
Log3 $name, 3, "$name: TEST -> ".$buttons;
$ret .= "<tr> <td colspan=\"5\" rowspan=\"1\" align=\"center\"> <div>$buttons</div> </td></tr>";
Zitatonclick="FW_cmd(FW_root+'?cmd={Entleerung(1,"2")}&XHR=1')"
Da gibt es m.M.n. noch etwas, was in der Verschachtelung nicht stimmt
Zitat von: amenomade am 12 Mai 2019, 19:37:46
Da gibt es m.M.n. noch etwas, was in der Verschachtelung nicht stimmt
Gibt es die Möglichkeit noch "besser" zu debuggen.
Ich habe schon mir nur das Stück vorgenommen aber komme immer zum Fehler.
Sobald ich die Variable Text maskieren möchte tritt der Fehler auf.
EDIT:
Selbst wenn ich alles umschreibe von " auf das ' Zeichen
$buttons = '<INPUT type="reset" onclick="FW_cmd(FW_root+\'?cmd={Entleerung(';
$buttons .= $var1; # variable 1 Zahl
$buttons .= ','; # Trennung
$buttons .= ''; # eventuelles Zwischenzeichen - Maskierung
$buttons .= $var2; # variable 2
$buttons .= ''; # eventuelles Zwischenzeichen - Maskierung
$buttons .= ')}&XHR=1\')" value="update_Data" %s/>';
geht es nicht, sobald ich definieren möchte mit der Maskierung das es Text ist.
Das ist schwierig: Du hast in einer Konkatenation von Perl Strings eine Konkatenation von Javascript Strings... und jede Art muss quotes und double quotes escapen.
Ich würde in einem online Perl Tester, z.B. https://www.tutorialspoint.com/execute_perl_online.php zuerst zu eine Variable kommen, die eine rightige Javascript String enthält (diese mit einem intelligenten Editor mit javascript Syntaxhervorhebung kontrollieren)
Zitat von: amenomade am 12 Mai 2019, 20:03:31
Das ist schwierig: Du hast in einer Konkatenation von Perl Strings eine Konkatenation von Javascript Strings... und jede Art muss quotes und double quotes escapen.
Ich würde in einem online Perl Tester, z.B. https://www.tutorialspoint.com/execute_perl_online.php zuerst zu eine Variable kommen, die eine rightige Javascript String enthält (diese mit einem intelligenten Editor mit javascript Syntaxhervorhebung kontrollieren)
Hm, das wird natürlich eine sehr sehr große Herausforderung.
Kann es sein, das vielleicht auch schon der Fehler in der sub _FW_Detail steckt wo das Script zum aufrufen verankert ist?
ODER
kommt nur meine Sub in Frage welche aufgerufen wird. (also diese wo der Code zum HTML Bau verankert ist?
Funktioniert es, wenn Du fix (ohne Variable) folgendes in deinem Modul einträgst:
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(1,\"123e4\")}&XHR=1\')\" value=\"Text\" %s/>";
Zitat von: amenomade am 12 Mai 2019, 20:58:48
Funktioniert es, wenn Du fix (ohne Variable) folgendes in deinem Modul einträgst:
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(1,\"123e4\")}&XHR=1\')\" value=\"Text\" %s/>";
Nein leider nicht. Nach fester Verankerung kommt
Zitatstring literal contains an unescaped line break
Und mit:
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(1,\\\"123e4\\\")}&XHR=1\')\" value=\"Text\" %s/>";
?
(ein escaped backslash in Perl, um das double quote in Javascript zu escapen)...
Zitat von: amenomade am 12 Mai 2019, 21:36:55
Und mit:
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(1,\\\"123e4\\\")}&XHR=1\')\" value=\"Text\" %s/>";
?
(ein escaped backslash in Perl, um das double quote in Javascript zu escapen)...
Da erhalte ich
ZitatSyntaxError: '' literal not terminated before end of script
Naja, wir haben " ' " " ' ". Wäre eine dreifache Verschachtelung perl-html-javascript... geht aber nicht : der zweite " schliesst den ersten.
Ich weiss nicht wirklich, was Du machen könntest.
Zitat von: amenomade am 12 Mai 2019, 22:58:39
Naja, wir haben " ' " " ' ". Wäre eine dreifache Verschachtelung perl-html-javascript... geht aber nicht : der zweite " schliesst den ersten.
Ich weiss nicht wirklich, was Du machen könntest.
Kann es innerhalb FHEM ein Verarbeitunsfehler sein oder hat nur intern das Modul die Verarbeitung zu leisten?
Ich frage daher, weil Bsp: FW_cmd hier als FHEM Funktionen (http://hier%20als%20fhem%20funktionen) beschrieben werden.
Das komische bleibt ja, via Kommandozeile in FHEM klappt es.
Ein Umweg wäre nur, das ich über eine "Globale Variable" daran komme, was ich aber vermeiden wollte.
Bei der Verarbeitung
->FW_detailFn ->Script -> Sub
geht es ja
nur bei
->FW_detailFn ->Script -> Sub -> Sub
nicht
FW_cmd ist eine Javascript Funktion aus fhemweb.js
Vielleicht ist die Lösung ganz anders. Mit deiner Funktion willst Du eine String bauen, die HTML Code mit Buttons & Co enthält. Was willst Du dann mit dieser Funktion machen? Wofür wird die String dann benutzt?
Hallo!
Ich hatte dies Problem auch gerade erst...ich habe gerade nochmal ein wenig getestet...bin mir aber nicht sicher, ob ich das Problem auch richtig verstanden habe:
my $changecmd = "{MAX_Temperatur_TEST("HUHU")}";";
$html.="<a style=\"cursor: pointer;\" onClick=\"FW_cmd(FW_root+'?cmd=$changecmd&XHR=1')\">TESTXXX</a>";
Aufgerufen wird hier "MAX_Temperatur_TEST" mit der "Variablen" "HUHU". Die Sub sieht zum testen so aus:
sub MAX_Temperatur_TEST($){
my $Value = shift;
Log3 "TEST",1,"TEST, $Value";
return "huhu";
}
Ich habe es nur geschafft, indem ich die Anführungszeichen als """ angegeben habe. Alles andere klappte nicht.
Möchtest Du dann auch mit dem Rückgabewert der Funktion arbeiten? Dann:
my $changecmd = "{MAX_Temperatur_TEST("HUHU")}";";
$html.="<a style=\"cursor: pointer;\" onClick=\"FW_cmd(FW_root+'?cmd=$changecmd&XHR=1',function(data){FW_okDialog(data)})\">TESTXXX</a>";
Ich habe aber insgesamt für mich festgestellt, das es u.U. wesentlich einfacher ist ein SET Command auszuführen:
my $cmd = "cmd.$name=set $name start";
$html.="<a style=\"cursor: pointer;\" onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$cmd',function(data){FW_okDialog(data)})\">$img</a>";
Hier könnte man ja noch weitere Werte übergeben. Das lässt sich auch so im Modul auswerten, das der SET-Command nicht weiter vom USER bedient werden kann...
Gruß
Bismosa
ZitatIch habe es nur geschafft, indem ich die Anführungszeichen als """ angegeben habe.
Ah schön! Das bringt uns das dritte Verschachtelungslevel! Prima
Zitat von: amenomade am 13 Mai 2019, 09:09:10
Ah schön! Das bringt uns das dritte Verschachtelungslevel! Prima
Dann muss ich das mal testen und den String mir zusammenbauen.
Schwieriger dazu wird, bei allen Versuchen die letzte Variante wieder zu finden :D
Edit:
Vermutlich muss ich hier ansetzen
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(1,\\\"123e4\\\")}&XHR=1\')\" value=\"Text\" %s/>";
Gesendet von iPhone mit Tapatalk Pro
;) DANKE! Ihr beiden.
Die Lösung der 3er Maskierung (perl-html-javascript) ist im Detail die Maskierung mit dem " vorzunehmen.
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung(";
$buttons .= """; # eventuelle - Maskierung
$buttons .= $name; # variable 1
$buttons .= """; # eventuelles - Maskierung
$buttons .= ","; # Trennung
$buttons .= """; # eventuelle - Maskierung
$buttons .= $var2; # variable 2
$buttons .= """; # eventuelle - Maskierung
$buttons .= ")}&XHR=1\')\" value=\"update_Data\" %s/>";
ODER alles zusammen
$buttons = "<INPUT type=\"reset\" onclick=\"FW_cmd(FW_root+\'?cmd={Entleerung("$name","$var2")}&XHR=1\')\" value=\"update_Data\" %s/>";
Wenn man die $var2 direkt als Zahl übergeben möchte, so kann man die Maskierung weglassen.
--> Vielleicht kann man dies sogar als Bsp. für die Wiki mal vorschlagen.