BB Code auch über ein Popup einfügen?

papi22

Grünschnabel
Moin,

ich hoffe mal wieder auf Eure Hilfe. ;)

Das Problem ist das mein Code zwar wunderabr auf einer Seite funktioniert jedoch nicht wenn ich denn BB Code bzw. die Smieleys über ein Popup einfügen möchte.

Hoffe das jeman eine Idee hat wie man den Code abänder könnte damit er auch/bzw. in einem Popup funktioniert.

Code:
function insert(aTag, eTag) {
  var input = document.forms['formular'].elements['text'];
  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 = aTag + insText + eTag;
    /* Anpassen der Cursorposition */
    range = document.selection.createRange();
    if (insText.length == 0) {
      range.move('character', -eTag.length);
    } else {
      range.moveStart('character', aTag.length + insText.length + eTag.length);      
    }
    range.select();
  }
  
  // für neuere auf Gecko basierende Browser
  else if(typeof input.selectionStart != 'undefined')
  {
    // Einfügen des Formatierungscodes
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
    /* Anpassen der Cursorposition */
    var pos;
    if (insText.length == 0) {
      pos = start + aTag.length;
    } else {
      pos = start + aTag.length + insText.length + eTag.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
  }
  // für die übrigen Browser
  else
  {
    // Abfrage der Einfügeposition 
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos)) {
      pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length) {
      pos = input.value.length;
    }
    var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
    input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
  }
}

dieser Code funktioniert zwar , jedoch werden die Smieleys nicht an der Position des Courses eingefügt.

Code:
function insert_pop(smilie) {
 opener.document.formular.text.value += smiliet+" ";
 opener.document.formular.text.focus();
}

Ich bedanke mich schon mal im Voraus!

MfG
papi22
 
Hi,

das Elternfenster eines PopUps kann über das Objekt opener angesprochen werden.

Wird dein Script im PopUp ausgeführt, müssen im ersten Teil einige Bereiche ergänzt werden.
Code:
function insert(aTag, eTag) {
  var input = opener.document.forms['formular'].elements['text'];
  input.focus();
  /* für Internet Explorer */
  if(typeof opener.document.selection != 'undefined') {
    /* Einfügen des Formatierungscodes */
    var range = opener.document.selection.createRange();
    var insText = range.text;
    range.text = aTag + insText + eTag;
    /* Anpassen der Cursorposition */
    range = opener.document.selection.createRange();
    if (insText.length == 0) {
      range.move('character', -eTag.length);
    } else {
      range.moveStart('character', aTag.length + insText.length + eTag.length);
    }
    range.select();
  }

  // für neuere auf Gecko basierende Browser
  else if(typeof input.selectionStart != 'undefined')
  {
    // Einfügen des Formatierungscodes
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
    /* Anpassen der Cursorposition */
    var pos;
    if (insText.length == 0) {
      pos = start + aTag.length;
    } else {
      pos = start + aTag.length + insText.length + eTag.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
  }
  // für die übrigen Browser
  else
  {
    // Abfrage der Einfügeposition
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos)) {
      pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length) {
      pos = input.value.length;
    }
    var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
    input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
  }
}
Befindet sich im Elternfenster ein Fomular mit dem Name formular und eine Textarea text,
sollten die Tags aus dem PopUp eingesetzt werden.

Vielleicht löst das dein Problem.

Ciao
Quaese
 

Neue Beiträge

Zurück