13. september 2000 - 21:47Der er
3 kommentarer og 1 løsning
Beregning af bredde på en anden frame i NN og IE
Jeg skal bruge bredden på \"main\" framen fra menu framen (samme frameset) så referencen er parent.main. Nedenstående er lide kopieret sammen uden seriøs test... Skal virke i NN og IE (JA, PÅ SAMME TID :D)
var layerWidth = 165;
if (document.layers) { var maxWidth = parent.main.window.innerWidth - layerWidth - 16; } else if (document.all) { var maxWidth = parent.main.document.body.scrollWidth - layerWidth - 20; }
CyberZoom, take it away :D Jeg ofrer points\'ne for CyberZoom. Derfor mit navn i spørgsmålet.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
var maxWidth; if (document.layers) { maxWidth = parent.main.window.innerWidth - layerWidth - 16; } else if (document.all) { maxWidth = parent.main.document.body.offsetWidth - layerWidth - 20; }
Men det må først kaldes, når man er stensikker på at der ER loaded et dokument i \'main\'. Ellers kan IE ikke finde bredden (bruger body i beregningen). Hvis det skal fyres af i en funktion, skal variablen deklareres globalt, dersom den skal bruges i andre funktioner - derfor er den trukket ud for sig selv.
...og så er det nok meget godt at sætte lidt (), således: maxWidth = (parent.main.window.innerWidth - layerWidth) - 16; og ligeså i den anden linie ;o)
Pas på, Lars! Hvad nu \'if not parent.main\'...kan du følge mig? Så får du aldrig sat din maxWidth. Hvis doukumentet ikke er indlæst, når du tester for det, må du \'vende tilbage\' med en setTimeout, der kører script-delen igen. Det kan du gøre ved at indkapsle det i en funktion med din \'if\' sætning plus en \'else\', der laver setTimeout\'en - der kører funktionen igen efter 1-2 sekunder. Altså:
function setWidth() { if (parent.main) { if (document.layers) { maxWidth = parent.main.window.innerWidth - layerWidth - 16; } else if (document.all) { maxWidth = parent.main.document.body.offsetWidth - layerWidth - 20; } } else { setTimeout(\"setWidth()\",2000); } }
/mvh
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.