Hi!
Ich habe ein recht nützliches Script zum Scrollen von Layern gefunden.
Es funktioniert auch wunderbar, aber leider hat es keine Positionsbegrenzung. Sieht jemand von Euch eine Möglichkeit diese irgendwo einzubauen?
function flevSlideDiv() { // v2.0, Marja Ribbers-de Vroed, FlevOOware
if (arguments.length < 4) {return;}
var sD = arguments[0]; if (sD == "") {return;}
var oD = eval("MM_findObj('" + sD + "')"); if (oD == null) {return;}
var iNX = parseInt(arguments[1]), iNY = parseInt(arguments[2]), iS = parseInt(arguments[3]);
var iPx = (arguments.length > 4) ? parseInt(arguments[4]) : 0;
var iR = (arguments.length > 5) ? parseInt(arguments[5]) : 0;
var iT = 10, sS = ""; if (!document.layers) {oD = oD.style;}
if (oD.tT != null) {clearTimeout(oD.tT);}
var iCX = parseInt(oD.left), iCY = parseInt(oD.top);
if (iR != 0) { // relative
if (iR == 1) {iNX = iCX - iNX; iNY = iCY;} // left
else if (iR == 2) {iNX = iCX + iNX; iNY = iCY;} // right
else if (iR == 3) {iNY = iCY - iNY; iNX = iCX;} // up
else {iNY = iCY + iNY; iNX = iCX;} // down
}
var iX = iNX, iY = iNY;
if ((iCX != iNX) || (iCY != iNY)) {
if (iPx > 0) { iT = iS;
var iPxX = iPx, iPxY = iPx, iMX = Math.abs(iCX - iNX), iMY = Math.abs(iCY - iNY);
if (iMX < iMY) {iPxY = (iMX != 0) ? ((iMY/iMX)*iPx) : iPx;}
else {iPxX = (iMY != 0) ? ((iMX/iMY)*iPx) : iPx;}
if (iPxX >= iMX) {iPxX = Math.min(Math.ceil(iPxX), iPx);}
if (iPxY >= iMY) {iPxY = Math.min(Math.ceil(iPxY), iPx);}
if ((iCX < iNX) && (iCX + iPxX < iNX)) {iNX = iCX + iPxX;}
if ((iCX > iNX) && (iCX - iPxX > iNX)) {iNX = iCX - iPxX;}
if ((iCY < iNY) && (iCY + iPxY < iNY)) {iNY = iCY + iPxY;}
if ((iCY > iNY) && (iCY - iPxY > iNY)) {iNY = iCY - iPxY;}
}
else {
var iMX = ((iNX - iCX) / iS);
iMX = (iMX > 0) ? Math.ceil(iMX) : Math.floor(iMX);
iNX = iCX + iMX;
var iMY = ((iNY - iCY) / iS);
iMY = (iMY > 0) ? Math.ceil(iMY) : Math.floor(iMY);
iNY = iCY + iMY;
}
if ((parseInt(navigator.appVersion)>4 || navigator.userAgent.indexOf("MSIE")>-1) && (!window.opera)) {sS="px";}
if (iMX != 0) {eval("oD.left = '" + iNX + sS + "'");}
if (iMY != 0) {eval("oD.top = '" + iNY + sS + "'");}
var sFunction = "flevSlideDiv('" + sD + "'," + iX + "," + iY + "," + iS + "," + iPx + ",0)";
oD.tT = setTimeout(sFunction,iT);
}
}
oD.top ist bspw. die Variable für die Höhe des Layer. Nun müßte es doch möglich sein dem Script zu sagen:
if(oD.top>0 || oD.top<400){
// dann führe Scroll aus
}
else
{
// nix da...
}
...aber ich finde den Einsprung dafür nicht :(
Das Script wird mit onMouseDown="flevSlideDiv('history',0,80,20,6,4)"
aufgerufen.
Weiß jemand Rat?
Chriz!