Hallo Forum,
ich habe ein Problem mit der Positionierung der Farbpalette eine Rich Text Editors und zwar diesem hier:
http://www.kevinroth.com/rte/demo.htm
Wenn ich Text nun farbig markieren will klicke ich auf den Button und die Farbpalette wird absolut positioniert und zwar immer unterhalb des Buttons. Analog dazu der button mit dem man den Hintergrund einfärben kann. Die Werte top und left werden dabei über JS dynamisch berechnet (soviel meine ich herausgefunden zu haben ;)
Das Problem: Unser rte liegt nun in einem div mit noch vielen anderen html-elementen welcher positiono: relative; bekommen hat. Nun funktioniert die Positionierung der Farbpalette nicht mehr: der Bezugspunkt ist ein anderer.
Hier ist die richtext.js die ich mal hochgeladen habe...
http://www.sesamstrassenkind.de/richtext.js
Auszug daraus:
//get dialog position
var buttonElement = document.getElementById(command + '_' + rte);
var iLeftPos = findPosX(buttonElement);
var iTopPos = findPosY(buttonElement) + (buttonElement.offsetHeight + 4);
var oDialog = document.getElementById('cp');
oDialog.style.left = (iLeftPos) + "px";
oDialog.style.top = (iTopPos) + "px";
...und weiter unten:
//positioning functions courtesy of Peter-Paul Koch - http://www.quirksmode.org/
function findPosX(obj) {
var curleft = 0;
if (obj.offsetParent) {
while (obj.offsetParent) {
curleft += obj.offsetLeft;
obj = obj.offsetParent;
}
} else if (obj.x) {
curleft += obj.x;
}
return curleft;
}
function findPosY(obj) {
var curtop = 0;
if (obj.offsetParent) {
while (obj.offsetParent) {
curtop += obj.offsetTop;
obj = obj.offsetParent;
}
} else if (obj.y) {
curtop += obj.y;
}
return curtop;
}
Ich bitte um Nachsicht was meine JS-Kenntnisse angeht, ich versuche dieses Problem zu verstehen.
Es müsste doch möglich sein dass sich das Skript nicht am oberen Browserfenster orientiert sondern an einem relativ positionierten Container und die Werte top und left trotzdem "richtig" berechnet, also in Abhängigkeit der 2 buttons...
Ich wäre euch sehr dankbar für Denkabstösse, Hilfe.
vg Mel