3k Aufrufe
Gefragt in Webseiten HTML von ericmarch Experte (4.6k Punkte)
Hallo!

Folgende Situation: eine Seite enthält Code der an ein servergestütztes Programm eine Rückgabe liefert, programmtechnisch einfacher Text aus einer <TEXTAREA>. Diese aber soll der Benutzer nicht erreichen, die Resultate dort werden über Skripte berechnet.
Um das Eingabefeld ›unschädlich‹ zu machen wird es mittels Unterstützung von wz_dragdrop.js durch Überlagerung mit einem Rechteck in Hintergrundfarbe verdeckt.
Wenn der Anwender die Übergabefunktion aktiviert («Weiter-Taste») wird u.U. eine Fehlermeldung (mit alert() ) ausgelöst. Ist der Return-Wert = false passiert weiter nichts, es geht nicht weiter.

Das heißt - es passiert doch was… Ein plumper Versuch in einer per onLoad ausgelösten Initialisierungs-Function dieses TextArea-Element zu disablen - genauer gesagt den durchblinkenden Cursor ruhigzustellen - funktioniert obwohl das Skript damit abbricht.
Im IE wenigstens wird beim erfolglosen Versuch weiterzukommen der mit dem Disablen unterdrückte Cursor des Eingabefeldes sichtbar, in FF passiert das nicht.
Da die ganze Funktionalität auf Mausaktionen beruht genügt mir eine automatische weitere um den Cursor wieder zu unterdrücken. Warum das beim IE so funktioniert will ich lieber gar nicht wissen. Um den lästigen Cursor loszuwerden würde ein unschädlicher Klick auf z.B. die Verdeckgrafik ausreichen.
Wie emulieren ich so einen Klick?

Um das deutlich zu machen: ich suche praktisch das Gegenteil von etwa onMouseClick. Eine Function selbst auszulösen ist kein Problem, aber ein Zugriff auf z.B. die Überlagerungsgrafik um dieses gewissermaßen wachzurütteln hat keinen erkennbaren Effekt.
Wenn jemand eine andere Idee hätte das Ziel zu erreichen gäbe ich mich damit auch zufrieden

Eric March

8 Antworten

0 Punkte
Beantwortet von
ja klar. die webseite die den trojaner ganz ohne zutun des users selber installiert, die mausklicks von javascript ausgeführt ...

hast du deinen wirren text mal selber durchgelesen ?
0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
@treiberleiche

Ich find's etwas heftig Leuten Dinge zu unterstellen die wohl kaum wahrscheinlich sind wenn du wirklich den ›wirren‹ Text gelesen hättest. Aber dir zuliebe:
Ursprung der Page ist "The Survey System" (TSS). Eine auf Win-Servern (IIS) laufende EXE. Aufgabe war ein Drag'N'Drop (mittels wz_dragdrop.js) zu bauen das bestimmte Dinge ermöglicht. Auf Grund der Beschränktheit von TSS muss eine Texteingabe dort definiert werden um über JavaScript ermittelte Daten erfassen zu können - statt des Users füllt JS das Textfeld aus.
Damit der User nicht an das Textfeld herankommt habe ich es mangels derzeit besserer Ideen mit einer Grafik überdeckt (was netterweise eine Nebenwirkung der Aufgabe darstellt). Dummerweise ist der Cursor im Textfeld noch da und der Browser lässt ihn quasi such die Abdeckung hindurch blinken.
Diese Störung meinte ich mittels document.elements.{name}.enabled=false; beheben zu können - JS bricht hier ab weil es diese Funktion anscheinend doch nicht gibt, dennoch wirkt es anscheinend [kopfkratz…]
Da nun TSS auf Fehleingaben reagiert, und in unserem Falle nur mit einer JS-Meldung, wohl aber eben unter Zuweisung von Inhalt in das Textfeld, blinkt nach Wegklicken der alert-Box der Cursor wieder. Das sieht bescheiden aus, und nichts Bescheideneres als ein Klick auf eines der Objekte zum Draggen und Droppen beruhigt ihn wieder.
Also die einfache Idee: man löse mit Ende der alert-Box mit der Fehlermeldung einen Mausklick aus und hoffentlich herrscht dann optische Ruhe. Mehr wollte ich gar nicht.

Wo wir dabei sind - »document.elements.{name}.enabled=false;« scheint also falsch zu sein. Unter der Annahme (dieweilen ich auch nicht mehr weiß) man könnte so ein Element disablen oder (wohl das Optimum) die Visibility ausschalten - würde mir das wohl helfen, und wenn ja: wie ist das handwerklich zu machen?

Eric March
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
@kicia
Danke für den Link (den ersten). :)
Manchmal ist die Leitung halt doch zu lang; allerdings ist mir die Logik welches Element nun bei wem zu Hause ist noch nicht vollkommen durchsichtig.
Ich hatte nicht erwähnt, dass das geplante document.elements nun nicht direkt im Document sondern in einer Form steckt. Von Haus aus hat diese keinen Namen. Ich hatte ihr zwar mal einen gegeben, aber die falsche Syntax erwischt, sodass auch das ins Leere lief.
Nun hat sie einen Namen, ›das Kind‹ auch und ich habe ein wenig gezielt disabled und ›en‹abled und es scheint zu klappen wie ich's gerne hätte.

input type="hidden" (Link 2) scheint nicht anzubringen zu sein; dass es eine TextArea ist verdanke ich TSS und da ändere ich mal besser nichts dran. Ob man ein TextArea da auf hidden setzen kann teste ich im Büro ;)

CSS schließlich, Link 3, wäre schon was was mir gefiele, aber der Umbau der vorgefertigten Seitenstrukturen und die Kollegen dann damit zu konfrontieren - nein, das tue ich mir nun nicht an. Wenigstens nicht zu dieser Zeit.

Eric March
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
welches Element nun bei wem zu Hause ist

da stehts:
de.selfhtml.org/javascript/objekte/index.htm

dass das geplante document.elements nun nicht direkt im Document sondern in einer Form steck

das sollte es auch:
de.selfhtml.org/javascript/objekte/elements.htm

Du kannst auf viele arten auf DOM-Elemente (damit sind nicht nur formular "elements" gemeint) zugreifen.
Die sinnvollste hängt vom Zusammenhang ab.
Siehe dazu:
de.selfhtml.org/javascript/objekte/document.htm
de.selfhtml.org/javascript/objekte/node.htm
usw.

Ob man ein TextArea da auf hidden setzen kann teste ich im Büro

Ich empfehle lesen:
de.selfhtml.org/html/referenz/attribute.htm#textarea
de.selfhtml.org/html/referenz/attribute.htm#input
"hidden" ist in unserem fall der wert der eigenschaft "type" des elements "input". diese eigenschaft hat der textarea nicht.

CSS schließlich, Link 3, wäre schon was was mir gefiele, aber der Umbau der vorgefertigten Seitenstrukturen...

Der "Umbau der Seitenstrukturen" würde insgesamt so aussehen:
<textarea ... style="display:none">
Scheint mir nicht so ungeeuer aufwändig
0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
…eine kurze Rückmeldung: ich dachte ich käme dazu die Vorschläge und Hinweise so weit testen zu können, aber da ist mal wieder was dazwischengekommen. Ich bleibe aber da dran und noch mal ein großes Dankeschön!

Eric March
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
danke für die rückmeldung :)
0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
Ich setze diesen Thread mal auf gelöst da das Kernproblem gelöst ist.

Ob sich in den gelieferten Schätzen noch Alternativen finden weiß ich nicht zu sangen. So musste ich nach erfolgreichem Disablen für die Optik das TextArea erst Enablen damit es seine Funktion (die mit JS praktisch übergangen wurde) auch erfüllen kann. ein Stillsetzen per Style mag da direkt gehen oder zum Hemmschuh werden. Das gilt es noch zu probieren.

Eric March
...