Seite 2 von 2
Re: Javascript in HTML - Globale Variable im Body-Bereich
Verfasst: 28.10.2009, 20:13
von Beowulf
Java-Codes, die nur im IE funktionieren, trittst du besser in die Tonne.
Allerdings blick ich noch nicht ganz durch, was da eigentlich genau passiert. Es wird ja der Textbaustein immer ans Ende des Feldes eingefügt. Kriegt man das auch irgendwie so umgemodelt, daß er es an die aktuelle Curserposition im Textfeld einfügt?
Ja, dafür müsste bei deinem ersten Code (die verschlankte Version von dir) diese große if-Abfrage sein. Sie geht die verschiedenen Möglichkeiten durch, wahrscheinlich um auf mehreren Browsern funktionsfähig zu sein.
Re: Javascript in HTML - Globale Variable im Body-Bereich
Verfasst: 29.10.2009, 09:33
von Hans
Beowulf hat geschrieben:Java-Codes, die nur im IE funktionieren, trittst du besser in die Tonne.
Stimme zwar grundsätzlich zu, soweit ich mich erinnern kann, entwickelt Fightmeyer aber auch für seine Firma, und firmenintern ist sowas schon in Ordnung.
Re: Javascript in HTML - Globale Variable im Body-Bereich
Verfasst: 29.10.2009, 09:36
von Fightmeyer
In dem Fall gehts jetzt nur um einen administrativen Bereich für eine private Seite. Da spielt die volle Browserkompatibilität keine Rolle.
Im übrigen hab ich es jetzt noch hinbekommen, daß beim einfügen eines Textes, dieser immer an die aktuelle Stelle eingefügt wird.
Code: Alles auswählen
//text an Curserposition einfügen
function insert_text_into(text, formularbezeichnung, textfeldbezeichnung) {
form_name = formularbezeichnung;
text_name = textfeldbezeichnung;
var input = document.forms[form_name].elements[text_name];
input.focus();
/* für Internet Explorer */
if(typeof document.selection != 'undefined') {
/* Einfügen des Formatierungscodes */
var range = document.selection.createRange();
var insText = range.text;
range.text = text + insText;
}
}
Da mußte ledilgich der letzte If-Befehl weg.
Re: Javascript in HTML - Globale Variable im Body-Bereich
Verfasst: 29.10.2009, 16:33
von Beowulf
Also jetzt blicke ICH nicht mehr durch!
Es geht mir um folgende Codezeilen:
Code: Alles auswählen
var insText = range.text;
range.text = text + insText;
Wenn insText gleich range.text ist, dann ist in der zweiten Zeile doch range.text = text + range.text. Wenn also in einem Text das Wort "Hallo" markiert ist, und "Test" eingefügt werden soll, steht nachher "TestHallo" da, anstatt das Hallo zu ersetzen, oder? Und wenn kein Text selektiert wurde, um den Text einfach nur an der Cursorposition einzufügen, dürfte doch gar nichts passieren, oder?
PS: Habe den Code noch mal überarbeitet, so dass er wie erwartet funktioniert:
Code: Alles auswählen
function insert_text_into(text, formularbezeichnung, textfeldbezeichnung) {
var input = document.forms[formularbezeichnung].elements[textfeldbezeichnung];
input.focus();
if(typeof document.selection != 'undefined') {
var range = document.selection.createRange();
range.text = text;
}
}
Klappt sowohl im IE als auch im Opera.

Re: Javascript in HTML - Globale Variable im Body-Bereich
Verfasst: 02.11.2009, 11:34
von Fightmeyer
Beowulf hat geschrieben:Also jetzt blicke ICH nicht mehr durch!
Es geht mir um folgende Codezeilen:
Code: Alles auswählen
var insText = range.text;
range.text = text + insText;
Wenn insText gleich range.text ist, dann ist in der zweiten Zeile doch range.text = text + range.text. Wenn also in einem Text das Wort "Hallo" markiert ist, und "Test" eingefügt werden soll, steht nachher "TestHallo" da, anstatt das Hallo zu ersetzen, oder? Und wenn kein Text selektiert wurde, um den Text einfach nur an der Cursorposition einzufügen, dürfte doch gar nichts passieren, oder?
Doch. Er soll ja den markierten Text auch nicht ersetzen, sondern einfach an die Curserposition einen zusätzlichen Text einfügen. Von daher ist das schon richtig, wenn er die beiden Strings addiert. Eine Range ist auch eine einfache Curserposition. Auch wenn man nichts markiert hat. Darum funktioniert das sowohl mit Markierungen, als auch ohne Markierung.