Ver Mensaje Individual
  #4 (permalink)  
Antiguo 29/04/2004, 09:27
shendeluth
 
Fecha de Ingreso: abril-2004
Mensajes: 14
Antigüedad: 20 años, 1 mes
Puntos: 0
Hola de nuevo, me podrias ayudar una vez más? Te pongo un codigo a continuación y si me pudieras decir que es incompatible en internet explorer y como hacerlo compatible me harias un gran favor. Sinó puedes no pasa nada:

Código:
// INICI Editor
var command = '';

function InitToolbarButtons() {
  kids = document.getElementsByTagName('DIV');

  for (var i=0; i < kids.length; i++) {
    if (kids[i].className == 'imagebutton') {
      kids[i].onmouseover = tbmouseover;
      kids[i].onmouseout = tbmouseout;
      kids[i].onmousedown = tbmousedown;
      kids[i].onmouseup = tbmouseup;
      kids[i].onclick = tbclick;
    }
  }
}

function tbmousedown(e)
{
  this.firstChild.style.left = 2;
  this.firstChild.style.top = 2;
  this.style.border='inset 1px';
  e.preventDefault();
}

function tbmouseup()
{
  this.firstChild.style.left = 1;
  this.firstChild.style.top = 1;
  this.style.border='outset 1px';
}

function tbmouseout()
{
  this.style.border='solid 1px #80B7EB';
}

function tbmouseover()
{
  this.style.border='outset 1px';
}

function insertNodeAtSelection(win, insertNode)
{
      // get current selection
      var sel = win.getSelection();

      // get the first range of the selection
      // (there's almost always only one range)
      var range = sel.getRangeAt(0);

      // deselect everything
      sel.removeAllRanges();

      // remove content of current selection from document
      range.deleteContents();

      // get location of current selection
      var container = range.startContainer;
      var pos = range.startOffset;

      // make a new range for the new selection
      range=document.createRange();

      if (container.nodeType==3 && insertNode.nodeType==3) {

        // if we insert text in a textnode, do optimized insertion
        container.insertData(pos, insertNode.nodeValue);

        // put cursor after inserted text
        range.setEnd(container, pos+insertNode.length);
        range.setStart(container, pos+insertNode.length);

      } else {


        var afterNode;
        if (container.nodeType==3) {

          // when inserting into a textnode
          // we create 2 new textnodes
          // and put the insertNode in between

          var textNode = container;
          container = textNode.parentNode;
          var text = textNode.nodeValue;

          // text before the split
          var textBefore = text.substr(0,pos);
          // text after the split
          var textAfter = text.substr(pos);

          var beforeNode = document.createTextNode(textBefore);
          var afterNode = document.createTextNode(textAfter);

          // insert the 3 new nodes before the old one
          container.insertBefore(afterNode, textNode);
          container.insertBefore(insertNode, afterNode);
          container.insertBefore(beforeNode, insertNode);

          // remove the old node
          container.removeChild(textNode);

        } else {

          // else simply insert the node
          afterNode = container.childNodes[pos];
          container.insertBefore(insertNode, afterNode);
        }

        range.setEnd(afterNode, 0);
        range.setStart(afterNode, 0);
      }

      sel.addRange(range);
  };

function getOffsetTop(elm) {

  var mOffsetTop = elm.offsetTop;
  var mOffsetParent = elm.offsetParent;

  while(mOffsetParent){
   	mOffsetTop += mOffsetParent.offsetTop;
    mOffsetParent = mOffsetParent.offsetParent;
  }
 
  return mOffsetTop;
}

function getOffsetLeft(elm) {

  var mOffsetLeft = elm.offsetLeft;
  var mOffsetParent = elm.offsetParent;

  while(mOffsetParent){
    mOffsetLeft += mOffsetParent.offsetLeft;
    mOffsetParent = mOffsetParent.offsetParent;
  }
 
  return mOffsetLeft;
}

function tbclick()
{
  if ((this.id == 'forecolor') || (this.id == 'hilitecolor')) {
    parent.command = this.id;
    buttonElement = document.getElementById(this.id);
    document.getElementById('colorpalette').style.left = getOffsetLeft(buttonElement);
    document.getElementById('colorpalette').style.top = getOffsetTop(buttonElement) + buttonElement.offsetHeight;
    document.getElementById('colorpalette').style.visibility='visible';
  } else if (this.id == 'createlink') {
    var szURL = prompt('Enter a URL:', 'http://');
    if ((szURL != null) && (szURL != '')) {
      document.getElementById('edit').contentWindow.document.execCommand('CreateLink',false,szURL);
    }
  } else if (this.id == 'createimage') {
    imagePath = prompt('Enter Image URL:', 'http://');
    if ((imagePath != null) && (imagePath != '')) {
      document.getElementById('edit').contentWindow.document.execCommand('InsertImage', false, imagePath);
    }
  } else if (this.id == 'createtable') {
    e = document.getElementById('edit');
    rowstext = prompt('enter rows');
    colstext = prompt('enter cols');
    rows = parseInt(rowstext);
    cols = parseInt(colstext);
    if ((rows > 0) && (cols > 0)) {
      table = e.contentWindow.document.createElement('table');
      table.setAttribute('border', '1');
      table.setAttribute('cellpadding', '2');
      table.setAttribute('cellspacing', '2');
      tbody = e.contentWindow.document.createElement('tbody');
      for (var i=0; i < rows; i++) {
        tr =e.contentWindow.document.createElement('tr');
        for (var j=0; j < cols; j++) {
          td =e.contentWindow.document.createElement('td');
          br =e.contentWindow.document.createElement('br');
          td.appendChild(br);
          tr.appendChild(td);
        }
        tbody.appendChild(tr);
      }
      table.appendChild(tbody);      
      insertNodeAtSelection(e.contentWindow, table);
    }
  } else {
    document.getElementById('edit').contentWindow.document.execCommand(this.id, false, null);
  }
}

function Select(selectname)
{
  
  var cursel = getElementById(selectname).selectedIndex;
  /* First one is always a label */
  if (cursel != 0) {
    var selected = document.getElementById(selectname).options[cursel].value;
    document.getElementById('edit').contentWindow.document.execCommand(selectname, false, selected);
    getElementById(selectname).selectedIndex = 0;
  }
  document.getElementById('edit').contentWindow.focus();
}

function dismisscolorpalette()
{
  document.getElementById('colorpalette').style.visibility='hidden';
}


function Start() {
  document.getElementById('edit').contentWindow.document.designMode = 'on';
  //try {
  //  document.getElementById('edit').contentWindow.document.execCommand('undo', false, null);
  //}  catch (e) {
  //  alert('This demo is not supported on your level of Mozilla.');
  //}

  InitToolbarButtons();
  document.addEventListener('mousedown', dismisscolorpalette, true);
  document.getElementById('edit').contentWindow.document.addEventListener('mousedown', dismisscolorpalette, true);
  document.addEventListener('keypress', dismisscolorpalette, true);
  document.getElementById('edit').contentWindow.document.addEventListener('keypress', dismisscolorpalette, true);
}
Gracias.

Última edición por shendeluth; 29/04/2004 a las 13:25