30. maj 2005 - 13:05Der er
7 kommentarer og 1 løsning
window.onresize husker bredden?
Jeg har lavet en funktion til IE for at emulere min-width og max-width. Når brugeren resizer vinduet kalder den en funktion der med document.body.clientWidth resizer et div. Problemet er at når vinduet har været i fuld størrelse, er det som om IE6 husker bredden, og derfor bruger den fulde bredde i funktionen, istedet for at bruge den nye, smallere bredde. Problemet opstår ikke den anden vej!
En hurtig update: Det er åbenbart fordi IE crasher (surprise) når man kører funktionen, og ikke fordi den husker bredden. Jeg har oplevet både soft crashes (den bliver ved med at fungere, men lukker af for al JS) og hard crashes (farvel)..
En løsning jeg fandt via google var denne: jeg har indsat "<!---->" (altså en tom kommentar) i toppen af html-dokumenten - inden doctypen - og så opstår der ingen problemer.. det er dog et grimt hack jeg gerne ville undgå..
er der nogen af de kloge hoveder derude der kan forstå hvad der går galt?
Brugen af den tomme kommentar disable'er samtidig en stor del af CSS i IE. Der må _intet_ stå før DTD'en ... ellers går IE i 'quirks-mode' og kan bl.a. ikke bruge CSS' box-model. Det er et yderst uklogt 'hack' :)
Årsagen til FF ikke crasher er, at den først fyrer event'en af, når du stopper din resize-handling ... IE fyrer den af kontinuerligt under handlingen. Det betyder, du kan lave real-time resize i IE, hvorimod FF skodder fælt på dette punkt ... det er simpelthen umuligt :[
Da siden crash'er for dig, kunne det dog tyde på, du har skrevet noget uhensigtsmæssig og/eller tung kode på siden ... det bør ikke være et problem - og plejer ikke at være det.
Der er en enkelt ting i den kode, du viser, der bør laves om. Der er ingen grund til, at du kontinuerligt skal hente en ny reference til de to containere. Dem bør du oprette en fast reference til på onload - og så bruge de to referencer, når du vil have fat i elementerne. Det vil afgjort hjælpe en hel del. Hvad du derudover bør lave om, er ikke til at sige udfra det oplyste.
Hvorfor i øvrigt det lidt sære browser-check? Hvilke browsere vil du fange med den - og hvorfor overhovedet gøre forskel?
Det sære browsercheck er lavet for kun at fange IE6. Jeg behøver ikke funktionen til Firefox da den understøtter min-width og max-width, og den jeg laver siden for vil kun understøtte de to browsere da det er noget intranet-gejl.
Problemet opstår dog stadig, eftersom at IE bliver ved med at kalde funktionen efter at man er færdig med at resize vinduet - det kan jeg se i min statuslinje (min meget primitive bugfinder).
Nej, det gør den nu ikke ... den er bare ikke blevet færdig med køen af kald :) Du kan komme udenom med denne her:
var d = document; var el1,el2,timer; window.onload = function () { el1 = d.getElementById("outercontainer"); el2 = d.getElementById("innercontainer") }
Hvis du gør, som jeg skriver, er der ingen problemer. Det virker helt fint :)
Synes godt om
Ny brugerNybegynder
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.