Avatar billede etlekana Nybegynder
23. maj 2001 - 14:02 Der er 6 kommentarer og
1 løsning

Probleme med skjulte lag og anchor tags..

Hejsa allesammen.

Jeg sidder lige og bøvler med en side som jeg selv syntes er ved at blive rimelig flot efterhånden.

Nu er jeg så støt ind i et problem jeg ikke rigtig kan forklare hvorfor den kommer :o(

Hvis i tjekker http://www.basilweb.dk

Der er en news sektion.

Hvis i trykker på en af nyhederne ude i siderne, så ryger i direkte ind på nyden på siden. Alle de andre nyheder er neden under og der er en nyhedsliste oppe for oven...

Hvis man bruger et anchor så bliver anchor stedet låst fast som toppen af siden..

Jeg kan ikke bladre højere op.

Hvis i går ind på denne side ryger i ind i listen over nyheder.

http://www.basilweb.dk/default.asp?show=news

Mvh Etlekana

300 point til den der finder svaret :o)

Avatar billede Thomas Nybegynder
23. maj 2001 - 14:49 #1
Det er fordi du linker med nyhed#news - læg mærke til #. Når din side så kan scrolles, så hopper browseren automatisk ned til <a name=xxx> linket... du kan se det virker uden problemer, når din side ikke kan scrolle!
Avatar billede Thomas Nybegynder
23. maj 2001 - 15:03 #2
Undskyld - havde misforstået dit spørgsmål!
Hvis du krymper din side lidt sammen, så du kan scrolle den langs siden, så er problemet der ikke - altså tror jeg det er en bug .... måske??? Eller også er det din javascript funktion der sikkert ikke fungerer optimalt ..!
Avatar billede jumper Nybegynder
23. maj 2001 - 15:16 #3
Problemet er den kode du har fundet hos skodkoder Thomas (bratta.com). Hver gang du scroller op eller ned, tjekkes der først om du må dette ved at kigge om y ville gå over eller under indholdet. y er en property på oScroll objektet som koden manuelt vedligeholder, der fortæller hvor højt oppe eller nede vi er. Når du bruger et anchor til at hoppe ned i dit DIV element, bliver denne y property ikke opdateret, og derfor tror koden stadig at du er ved toppen af elementet.

Vi kan da lave et lille lyn-fix. I funktionen scrollInit smider du dette kode ind lige før slutningen af funktionen:

oScroll.AdjustYPosition = AdjustBadYPosition;

og så laver vi en ekstra funktion:

function AdjustBadYPosition(){
  this.y = bw.ns4 ? this.css.clip.top : this.el.scrollTop;
}

Og så retter du

<a href=\"#news5\">Simple_Software: Form og indhold.</a>

til

<a href=\"#news5\" onclick=\"setTimeout(\'oScroll.AdjustYPosition()\',50);return true\">Simple_Software: Form og indhold.</a>

Og selvf. ligesådan ved de andre anchor links.

Hvorvidt det virker i NS4 aner jeg ikke, det er lang tid siden at jeg har skulle rode med den skodbrowser og den er også helt på vej ud, men clip.top skulle gerne svare til scrollTop så vidt jeg husker ;)

Prøv at teste det og se om det virker.

/Thor
Avatar billede etlekana Nybegynder
25. maj 2001 - 08:48 #4
Det virkede desværre ikke :o(

Nogen andre foreslag?

Mvh Etlekana
Avatar billede etlekana Nybegynder
06. juni 2001 - 09:11 #5
Nogle der er friske på at prøve igen?

Kom nu Jumper :o)

500 point hvis du skriver en kode der virker :o)
Avatar billede etlekana Nybegynder
11. juni 2001 - 10:20 #6
Er det her evt noget der kan bruges som det samme Jumper? Og er det noget der virker?

<SCRIPT SRC=\"/dhtmllib/dhtmllib2.js\">
  // Include DHTMLLib
</SCRIPT>

<SCRIPT>
var sRepeat=null
function doScroller(dir, src, amount) {
    // 3 arguments, dir: scroll \"up\" or \"down\",
    // src is the string id of positioned element
    // amount (optional) is number of pixels to scroll
    if (window.document.readyState==\"loading\") alert(\"Please wait until the page is finished loading.\")
    if (amount==null) amount=10
    if (dir==\"down\") {
        document.all[src].style.pixelTop-=amount
        if (-document.all[src].style.pixelTop>=document.all[src].offsetHeight-document.all[src].offsetParent.offsetHeight)
            document.all[src].style.pixelTop=-document.all[src].offsetHeight+document.all[src].offsetParent.offsetHeight           
    }
    else {
        document.all[src].style.pixelTop+=amount
        if (document.all[src].style.pixelTop>0)
            document.all[src].style.pixelTop = 0
    }
    if (sRepeat==null)
        sRepeat = setInterval(\"doScroller(\'\" + dir + \"\',\'\" + src + \"\',\" + amount + \")\",100)
    return false
}

window.document.onmouseup = new Function(\"clearInterval(sRepeat);sRepeat=null\")
window.document.ondragstart = new Function(\"return false\")
</SCRIPT>

<P>
  <A ONCLICK=\"return false\"
    ONMOUSEOVER=\"return doScroller(\'down\',\'s1\',40)\"
    ONMOUSEOUT=\"clearInterval(sRepeat)\" HREF=\"#\">
    Down
  </A> |
  <A ONCLICK=\"return false\"
    ONMOUSEOVER=\"return doScroller(\'up\',\'s1\',40)\"
    ONMOUSEOUT=\"clearInterval(sRepeat)\" HREF=\"#\">
    Up
  </A>
<DIV STYLE=\"position: absolute; width: 300; height: 100;
            clip: rect(0 300 100 0)\">
<STYLE>
.scroller {left:280;width:20;text-align:center;position:absolute;}
.scroller A {text-decoration: none;}
#s1 {font:10pt geneva, arial, sans-serif;background:navy;color:white;layer-background-color:navy;}
</STYLE>

<DIV CLASS=scroller>
  <A ONMOUSEOVER=\"return doScroller(\'up\',\'s1\')\"
    ONMOUSEOUT=\"clearInterval(sRepeat)\" 
    HREF=\"#\">
    U
</A>
</DIV>
<DIV class=scroller STYLE=\"top: 80\">
  <A ONMOUSEOVER=\"return doScroller(\'down\',\'s1\')\"
    ONMOUSEOUT=\"clearInterval(sRepeat)\"
    HREF=\"#\">
    D
  </A>
</DIV>
<DIV ID=\"s1\" STYLE=\"position: absolute;width: 280\">
  Contents<br>
  Contents<br>
  Contwefeftents<br>
  Contents<br>
  Conweftents<br>
  Contents<br>
  Contents<br>
  Contents<br>
  Cowefntents<br>
  Contents<br>
  Contents<br>
  Contents<br>
  Conefwefwefetents<br>
  Contewfewefnts<br>
  Contents<br>
  Contwffffffffffffffffffffffffffffffffefwefents<br>
  Contents<br>Contents<br>Contents<br>
</DIV>
</DIV>
Avatar billede etlekana Nybegynder
25. juni 2001 - 01:07 #7
Lukket.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester