Oprindeligt troede jeg egentligt, at det kun var et spørgsmål om at stable nogle onload, men det ser ikke ud til at være tilfældet.
Hvordan modificerer jeg preloaderen, således at den fungerer sammen med scrollbaren? Jeg er desværre ikke den fødte scripter, så jeg ville sætte stor pris på en pædagogisk forklaring af en evt. løsning, eller hvorfor det evt. ikke kan lade sig gøre.
Jeg ville ønske at jeg kunne præcisere hvor konflikten opstår, men jeg er desværre ikke en dygtig nok scripter til at kunne give et særligt kvalificeret bud.
Hvad jeg imidlertid kan sige er, at begge scripts fungerer upåklageligt hver for sig, og at det virker til at rækkefølgen af de to onload kommandoer bestemmer hvilken funktion der virker. Jeg kan dog ikke få onload = ” *** ; *** ;” til at virke. Yderligere vises loading layer’et under div scroller containeren når der loades… så måske konflikten skyldes fejl i rækkefølgen af lag -
Godt ord igen - jeg er vist lidt ved siden af mig selv - :)
Da jeg desværre ikke har mulighed for at uploade siden nogen steder, følger der en sammenskrevet version her - undskyld det roder, men jeg tænkte det var lettest hvis der ikke var eksterne filer -
<script type="text/javascript" language="JavaScript"> // BrowserCheck NS4 = document.layers && !document.getElementById; IE4 = document.all && !document.getElementById; brow5 = document.getElementById; function hideLoading(div){ div = "divLoading"; if (NS4) { document[div].visibility = 'hidden'; }else if (IE4) { document.all[div].style.visibility = 'hidden'; }else if (brow5) { document.getElementById(div).style.visibility = 'hidden'; }
} onload=hideLoading; </script>
<script type="text/JavaScript"> // measure page width and height (the viewable canvas area) function getViewport() { if (document.documentElement && document.documentElement.scrollLeft) this.scrollX = document.documentElement.scrollLeft; else if (document.body && document.body.scrollLeft) this.scrollX = document.body.scrollLeft; else if (window.scrollX) this.scrollX = window.scrollX; else if (window.pageXOffset) this.scrollX = window.pageXOffset; else this.scrollX = 0; if (document.documentElement && document.documentElement.scrollTop) this.scrollY = document.documentElement.scrollTop; else if (document.body && document.body.scrollTop) this.scrollY = document.body.scrollTop; else if (window.scrollY) this.scrollY = window.scrollY; else if (window.pageYOffset) this.scrollY = window.pageYOffset; else this.scrollY = 0; if (document.documentElement && document.documentElement.clientWidth) this.width = document.documentElement.clientWidth; else if (document.body && document.body.clientWidth) this.width = document.body.clientWidth; else if (window.innerWidth) this.width = window.innerWidth; else this.width = 0; if (document.documentElement && document.documentElement.clientHeight) this.height = document.documentElement.clientHeight; else if (document.body && document.body.clientHeight) this.height = document.body.clientHeight; else if (window.innerHeight) this.height = window.innerHeight; else this.height = 0; return this; }
// event listeners // object = the object to attach the event handler to // eventType = the type of event to listen for // functionName = the handler function to execute when the event is fired // capture = use event capture? function addEvent(object, eventType, functionName, capture) { if (object.addEventListener) { object.addEventListener(eventType, functionName, capture); return true; } else if (object.attachEvent) { var ae = object.attachEvent("on" + eventType, functionName); return ae; } else { object["on" + eventType] = functionName; } }
function removeEvent(object, eventType, functionName, capture) { if (object.removeEventListener) { object.removeEventListener(eventType, functionName, capture); return true; } else if (object.detachEvent) { var re = object.detachEvent("on" + eventType, functionName); return re; } else { object["on" + eventType] = null; } }
function fixEvent(e, currentTarget) { if (!e) e = event; if (!e.target) e.target = e.srcElement; if (!e.currentTarget) e.currentTarget = currentTarget; if (typeof e.layerX == "undefined") e.layerX = e.offsetX; if (typeof e.layerY == "undefined") e.layerY = e.offsetY; if (typeof e.clientX == "undefined") e.clientX = e.pageX; if (typeof e.clientY == "undefined") e.clientY = e.pageY; if (!e.stopPropagation) e.stopPropagation = function() { this.cancelBubble = true; } if (!e.preventDefault) e.preventDefault = function() { this.returnValue = false; } return e; }
// set layer opacity (in percent, between 0 and 100) createObjectById.prototype.setOpacity = function(o) { if (typeof this.css.MozOpacity != "undefined") { this.css.MozOpacity = (o / 100); this.o = o; } else if (this.el.filters) { this.css.filter = "alpha(opacity=" + o + ")"; this.o = o; } }
// moves a layer to (x, y) pixels createObjectById.prototype.moveTo = function(x, y) { if (x != null && typeof x == "number") { x = Math.round(x); this.x = x; this.css.left = x + "px"; } if (y != null && typeof y == "number") { y = Math.round(y); this.y = y; this.css.top = y + "px"; } }
// resize layer to (width, height) pixels createObjectById.prototype.setSize = function(w, h) { if (w != null && typeof w == "number") { if (w < 0) w = 0; w = Math.round(w); this.css.width = w + "px"; } if (h != null && typeof h == "number") { if (h < 0) h = 0; h = Math.round(h); this.css.height = h + "px"; } this.update(); }
// clips layer to specific dimensions; (top, right, bottom, left) in pixels createObjectById.prototype.clipTo = function(t, r, b, l) { if (t < 0) t = 0; if (r < 0) r = 0; if (b < 0) b = 0; if (l < 0) l = 0; this.css.clip = "rect(" + t + "px, " + r + "px, " + b + "px, " + l + "px)"; }
//scrollbar scroller = { scrollables: 1, // set the number of scrollable scrollContent step: 30, // set the timeout between each scroll speed: 5, // set the scroll speed wheelSpeed: 15, // set the scroll speed when using the mouse wheel wheelScrolled: false, timer: 0, contentY: 0, dragY: 0, clickY: 0,
mouseDown: function(e) { e = fixEvent(e); var canvas = new getViewport(); var mouseY = e.clientY + canvas.scrollY; var target = (e.target.nodeType == 3 || e.target.tagName.toLowerCase() == 'img') ? e.target.parentNode : e.target; scroller.wheelScrolled = false; for (var i = 1; i <= scroller.scrollables; i++) { if (target.id == scroller.bar[i].el.id) { scroller.bar[i].grab = true; scroller.clickY = mouseY - scroller.bar[i].y; e.preventDefault(); } else if (target.id == scroller.track[i].el.id) { if (scroller.content[i].h > scroller.container[i].h) { scroller.track[i].grab = true; scroller.dragY = e.layerY - (scroller.bar[i].h / 2); if (scroller.dragY < 0) scroller.dragY = 0; if (scroller.dragY > scroller.track[i].h - scroller.bar[i].h) scroller.dragY = scroller.track[i].h - scroller.bar[i].h; scroller.contentY = 0 - (scroller.dragY * (scroller.content[i].h - scroller.container[i].h) / Math.round(scroller.track[i].h - scroller.bar[i].h)); scroller.content[i].moveTo(0, scroller.contentY); scroller.bar[i].moveTo(0, scroller.dragY); e.preventDefault(e); } } else if (target.id == scroller.up[i].el.id) { scroller.up[i].grab = true; scroller.scroll(i, scroller.speed); e.preventDefault(); } else if (target.id == scroller.down[i].el.id) { scroller.down[i].grab = true; scroller.scroll(i, -scroller.speed); e.preventDefault(); } } },
mouseUp: function(e) { for (var i = 1; i <= scroller.scrollables; i++) { scroller.bar[i].grab = false; scroller.track[i].grab = false; scroller.up[i].grab = false; scroller.down[i].grab = false; } clearTimeout(scroller.timer); },
mouseMove: function(e) { for (var i = 1; i <= scroller.scrollables; i++) { if (scroller.bar[i].grab && scroller.content[i].h > scroller.container[i].h) { e = fixEvent(e); var canvas = new getViewport(); var mouseY = e.clientY + canvas.scrollY; scroller.dragY = mouseY - scroller.clickY; if (scroller.dragY < 0) scroller.dragY = 0; if (scroller.dragY > scroller.track[i].h - scroller.bar[i].h) scroller.dragY = scroller.track[i].h - scroller.bar[i].h; scroller.contentY = 0 - (scroller.dragY * (scroller.content[i].h - scroller.container[i].h) / Math.round(scroller.track[i].h - scroller.bar[i].h)); scroller.content[i].moveTo(0, scroller.contentY); scroller.bar[i].moveTo(0, scroller.dragY); e.preventDefault(); } } },
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.