WYSIWYG => Eigenes Kontextmenü mit bestimmten Auswahlmöäglichkeiten

Das mach ich schon. Sobald die Rechte Maustaste gedrückt wird, rufe ich mein eigenes Kontextmenü auf. Bei mir geht es allerdings noch darum, dass man z.B. mit einem Rechtsklick auf eine Tabelle/Zelle deren Eigenschaften ändern kann. Bei mir gehts dabei in erster Linie mal um das Erkennen einer Tabelle in diesem Bereich.
 
naja.... du kannst bei einem Event ja das Ursprungselement ermitteln:
beim IE:srcElement
bei anderen:target

Du musst also nur ermitteln, ob der tagName des Ursprungselements(oder eines seiner Eltern-Elemente) td,th,tr usw. ist
 
Ich habe es jetzt mal so probiert
Code:
schreibfeld.document.oncontextmenu= new Function("alert(window.event.srcElement.tagName);return false;");
bekomme da aber immer diese Fehlermeldung:
Zeile: 1
Zeichen: 1
Fehler: Objekt erforderlich
Code: 0
 
Ok Hab jetzt etwas gefunden, wie es geht. Bloß eins ist dabei blöd. Der Inhalt verschwindet immer. Daher muss ich ihn wieder einfügen lassen. Das machte es immer mit so einem zucken/blinken. geht das evt auch ohne?
Code:
function conmen()
{
	html = schreibfeld.document.body.innerHTML;
	schreibfeld.document.designMode = 'off';
	alert(window.event.srcElement.tagName);
	schreibfeld.document.designMode = 'On';
	schreibfeld.document.body.innerHTML = html;
	schreibfeld.document.oncontextmenu= new Function("conmen()");
	return false;
}

Aufruf:
Code:
schreibfeld.document.oncontextmenu= new Function("conmen();return false;");

Das mit dem "schreibfeld.document.oncontextmenu= new Function("conmen()");" in der conmen() Funktion muss sein, da sonst beim einschalten des DesignMode Das neue Kontext menue nicht übernommen wird.
 
So. Nachdem ich ein bisschen herumprobiert habe, funktioniert es nun mit der Erkennung ohne zucken und ohne viel Code.
Hier mal der Code für das Kontextmenü.
Code:
function conmen()
{
	html = schreibfeld.document.all.tags("HTML")[0].outerHTML;
	alert(html);
	
	target = schreibfeld.event.srcElement;
	
	for (; target; target = target.parentNode) {
	var tag = target.tagName;
		alert("=> "+tag);
	}
	
	schreibfeld.document.oncontextmenu= new Function("conmen();");
        return false;
}
Aufruf über:
Code:
schreibfeld.document.oncontextmenu= new Function("conmen();");

Jetzt gehts dann nur noch um das Einfügen der Änderungen an der richtigen Stelle. Mal schauen, wie weit ich da komme.
 
Hi, bin hier auf ein kleines Problem gestoßen. Warum macht er das Obere, gibt mir aber beim unteren den Fehler, dass which undefiniert ist?
alert(which.tagName);
setTimeout("which.outerHTML = what",150);

'which' ist der Tag, bei dem der Code geändert wird (z.B.: TD). ehat ist der neue Code.

EDIT:
Oder hat jemand anderes eine Idee, wie ich den Tag ersetzten kann, bzw das, was bei
<span ... > (den Punkten) steht ändern/austauschen kann.

EDIT2:
Ok ich glaube ich hab was. werde es aber erst ausgibig testen, bevor ich es hier sage.
 
Zuletzt bearbeitet:
Weiß einer von euch, wie ich alle style tags ausgeben kann? wenn ich alert(td.style) mache, gibt es mir nur [object] aus.
 
Versuch's mal so:
Code:
var stylestring = '';
  for (i in td.style)
  	stylestring += 'td.style.'+ i +': '+ eval('td.style.'+i) +';\n';
  alert(stylestring);
oder so
Code:
alert(td.getAttribute('style'));
 
Zuletzt bearbeitet:
Zurück