Universelles JS-Skript zumErstellen eigenerBefehle

Hallo,
gibt es ein Javaskripttool, welches den HTML-Code zunächst nach bestimmten Zeichenfolgen durchsucht und diese durch andere Zeichen ersetzt, bevor dann der HTML-Code ausgeführt wird.

Beispiel:
Vorgabe: Das ist ((fettein)) Fettschrift ((fettaus)) gewesen.
Änderung, intern: Das ist Fettschrift gewesen.

Natürlich ist das Beispiel insofern unsinnig, als der Anwender auch direkt die TAGs einfügen oder CSS verwenden könnte. In der Praxis möchte ich aber, dass der Anwender die Syntax der TAGs nicht lernen muss sondern stattdessen eine andere Umschreibung in Doppelklammern ((fett…)) eingeben kann.
Statt würde dort später dann ein umfangreicher Code mit Funktionsaufrufen und Parametern verwendet - aber, wie gesagt, dies nicht für den Anwender lesbar. Er sieht und ändert immer nur seine Vorgabe.
LG
Hans-Jürgen

Hallo Hans-Jürgen,

gibt es ein Javaskripttool, welches den HTML-Code zunächst
nach bestimmten Zeichenfolgen durchsucht und diese durch
andere Zeichen ersetzt, bevor dann der HTML-Code ausgeführt
wird.

das ist eher etwas für serverseitige Sprachen wie PHP, ASP, JSP. Aber natürlich könnte man sich bei ausreichender Kenntnis regulärer Ausdrücke so ein Tool auch mit JavaScript selbst schreiben.

Ich fürchte aber, der DOM-Baum müsste vollständig geladen sein, bevor ein clientseitiges Script überhaupt zu arbeiten beginnen könnte. Bei dem Umfang an nachträglichen Ummodeleien wird da möglicherweise auch schon das ein oder andere Codestück am Bildschirm in seiner ursprünglichen Form kurzzeitig gerendert, bevor es in die endgültige Form gebracht wird. Das ist ja wohl auch der Grund, warum man so etwas lieber serverseitig macht .

Gruß Gernot

Guten Morgen Gernot,
vielen Dank, dass du dir Gedanken über mein größtes JS-Problem gemacht hast. Serverseitige Lösungen muss ich komplett ausschließen, weil das Programm auch offline lauffähig sein muss.
Selbst Lösungsansätze wie DOM-Baum, benutzen von Arrays, CSS usw. müssen vermieden werden, denn diese würden unweigerlich mit einem evtl. vom späteren User erstellten DOM-Baum, Array gleichen Namens oder CSS usw. mit unvorhersehbaren Folgen kollidieren.
Nein, dieses Tool müsste sich komplett wie eigenständige JS-Befehle verhalten, weil nicht vorhersehbar ist, was der spätere „Programmierer“ da „zusammenschustert“.
Bevor HTML ausgeführt wird, wird meines Wissens zunächst 1 x JS ausgeführt. Hier muss der Programmcode gelesen und im ROM verändert und dann ausgeführt werden.
Ein Lesen und erstellen eines endgültigen Codes in einer neuen Datei, die dann ausgeführt und anschließend wieder gelöscht wird, ist meines Wissens aus Sicherheitsgründen nicht möglich.

Viele Grüße aus Mainz
Hans-Jürgen

Hallo Hans-Jürgen,

Nein, dieses Tool müsste sich komplett wie eigenständige
JS-Befehle verhalten, weil nicht vorhersehbar ist, was der
spätere „Programmierer“ da „zusammenschustert“.

ich verstehe immer noch nicht, was du mit eigenständigen JS-Befehlen meinst. Sollen die sich etwa verhalten wie JS-interne Methoden, etwa window.alert() oder document.write()? Möglicherweise kannst du da die eine oder andere JS-interne Methode mit dem prototype-Objekt aufrüsten, aber das könnten spätere Programmierer ja auch wieder durchkreuzen.

Bevor HTML ausgeführt wird, wird meines Wissens zunächst 1 x
JS ausgeführt.

… je nachdem, wo es im Quellcode steht.

Hier muss der Programmcode gelesen und im ROM
verändert und dann ausgeführt werden.

Der Versuch auf Elemente zuzugreifen, die im DOM-Baum noch nicht mit abschließendem Tag eingelesen sind, produziert in JavaScript immer Fehlermeldungen.

Ein Lesen und erstellen eines endgültigen Codes in einer neuen
Datei, die dann ausgeführt und anschließend wieder gelöscht
wird, ist meines Wissens aus Sicherheitsgründen nicht möglich.

Du könntest die Anzeige des BODY-Elementes in deiner CSS-Datei erst einmal mit display:none unterdrücken, dann mit document.write(), deinElement.innerHTML (alt) = deinElement.innerHTML (neu) oder einer Kombination aus document.createElement() und deinElement.appendChild() oder ~replaceChild() die Struktur in deinem Sinne modifizieren und zu guter Letzt die Display-Eigenschaft des BODY-Elementes wieder auf block stellen.

Evtl. hilft es dir auch, den endgültigen und/oder vorläufigen Code in einem Cookie zwischenzuspeichern, das mit Ablauf der Session seine Gültigkeit verliert oder auch nicht.

Worauf du mit deiner Anwendung aber eigentlich hinauswillst, habe ich noch nicht verstanden.

Stelle deine Frage doch auch einmal im Forum von SELFHTML:

http://forum.de.selfhtml.org/

Gruß Gernot

gibt es ein Javaskripttool, welches den HTML-Code zunächst
nach bestimmten Zeichenfolgen durchsucht und diese durch
andere Zeichen ersetzt, bevor dann der HTML-Code ausgeführt
wird.
Beispiel:
Vorgabe: Das ist ((fettein)) Fettschrift ((fettaus)) gewesen.
Änderung, intern: Das ist Fettschrift gewesen.

prinzipiell ist das so wie im anderen posting angesprochen sinngemaess wie folgt zu loesen:

foo.innerHTML = String(foo.innerHTML).replace(/\(\((\/?)fett\)\)/,'');

der befehl waere ondomready, bzw. body.onload auszu fuehren. foo waere ein node, der die ausgabe enthaelt.

Natürlich ist das Beispiel insofern unsinnig, als der Anwender
auch direkt die TAGs einfügen oder CSS verwenden könnte. In
der Praxis möchte ich aber, dass der Anwender die Syntax der
TAGs nicht lernen muss sondern stattdessen eine andere
Umschreibung in Doppelklammern ((fett…)) eingeben kann.

da tut sich die krux auf: du willst daten erfassen, wirst sie also serverseitig verarbeiten. dann gehoeren die eingaben auch am server geprueft und ausgewertet.

Hallo,
>zunächst zur Frage: „Was will ich?“

Letzendlich möchte ich ein sehr einfach zu bedienendes Programm schreiben mit dem man interaktive Fragebögen erstellen kann. So eine Art Führerscheinprüfungsbogen mit direkter Bewertung durch den PC.

Ein Beispiel: Der Lehrer gibt in Word folgende Datei ein, bei der er die Musterantworten in Doppelklammern setzt:
Jamaika ist eine von ca. 1000 ((Inseln)), die dem amerikanischen Kontinent vorgelagert sind. In der Nähe liegen ((Kuba)) und Haiti.
Die Hauptstadt von Jamaika ist ((Kingston)).

Dann soll daraus ein Dokument entstehen, in dem der Schüler nach den Musterantworten gefragt wird und seine Eingaben auf Knopfdruck bewerten lassen kann.
(siehe auch: http://www.bandsinkarlsruhe.de/Dateien/Musikunterric…
Wird in Word die Sicherheit unter Extras/Makro/Sicherheit auf niedrig gestellt, so werden die entsprechenden Lücken in einem Wordformular angezeigt, welches über den Menüpunkt iWord in der Word-Menüleiste sehr komfortabel bearbeitet werden kann.

Nun hat nicht jeder Schüler Word. Also möchte ich dies in JS programmieren. Ziel ist, dass der Lehrer mit einem einfachen HTML-Editor auskommt ohne sich mit Knoten usw. herumschlagen zu müssen.

>foo.innerHTML
Ohje, diesen Befehl kenne ich nicht und konnte ihn auch nicht in Selfhtml finden.

>du willst daten erfassen, wirst sie also serverseitig verarbeiten. dann gehoeren die Eingaben auch am server geprueft und ausgewertet.
Im „Normalfall“ ist das richtig. Aber hier werden keine zusätzlichen Daten benötigt die irgendwo erfasst und gespeichert werden sollen. Die Musterantworten sind vorgegeben. Die Schülerantworten werden durch den Schüler eingegeben.
Eine Voraussetzung ist, das das Programm auch offline läuft (möglichst ohne Zusatzteile wie CSS, PHP usw.) und auf allen gängigen Browsern.

>Ich verstehe immer noch nicht, was du mit eigenständigen JS-Befehlen meinst. Sollen die sich etwa verhalten wie JS-interne Methoden, etwa window.alert() oder document.write()
Ja. Ich möchte den Lehrer ersparen langwierige Funktionsaufrufe usw. einzugeben. Das macht er nicht. Die Eingabe soll so einfach sein, wie im Word-Beispiel. Hinzu kommen später noch Sachen wie Radiobuttons, Multiple Choice usw.

>Stelle deine Frage doch auch einmal im Forum von SELFHTML
Habe ich bereits gemacht. Aber dort konnte man mir nicht wirklich weiterhelfen. (Frei nach dem Motto: Es gibt sicher eine Lösung und wenn du fleißig suchst, wirst du sie auch finden.) Ich habe mich artig bedankt und verabschiedet :frowning:

Viele Grüße
Hans-Jürgen