Avatar billede miss-g Seniormester
20. oktober 2004 - 00:53 Der er 27 kommentarer og
1 løsning

´Open new window´ højde efter indhold?

Har lavet et lille eksempel:
http://www.nicolin.dk/pop/index.htm

Jeg vil gerne have at det vindue som åbner, retter sin højde efter indhold. Kan det lade sig at gøre eftersom der ikke er fast højde på tabellen som ligger inden i?
Avatar billede roenving Novice
20. oktober 2004 - 00:59 #1
En afart af resize til billede og resize iframe efter indhold:

<script type="text/javascript">
function winHeight(){
  window.resizeTo(document.body.scrollWidth+4,document.body.scrollHeight+36);
}
window.onload=winHeight;
</script>

-- og det skal så ind i filerne, som vises i popuppen !-)
Avatar billede miss-g Seniormester
20. oktober 2004 - 01:03 #2
Jamen godaften Roenving *G*

Har sat scriptet ind i pop-up vinduet, og det virker delvist. Se selv på mit link.
Avatar billede roenving Novice
20. oktober 2004 - 01:08 #3
Prøv at fifle med de 36 !-)

-- det er garanteret een eller 2 pixels det drejer sig om !-)

-- eller også er det bredden, som snyder, for der er vist 4 pixel i hver side ...
Avatar billede miss-g Seniormester
20. oktober 2004 - 01:22 #4
Den endte sådan her:
<script type="text/javascript">
function winHeight(){
  window.resizeTo(document.body.scrollWidth+26,document.body.scrollHeight+59);
}
window.onload=winHeight;
</script>

Er det umuligt også at få den til at virke i Netscape?

Kan oplyse at din resize billede virker fint i Netscape *S*
Avatar billede miss-g Seniormester
20. oktober 2004 - 01:29 #5
Kigger ind i morgen - skal i seng nu *S*
Avatar billede roenving Novice
20. oktober 2004 - 01:31 #6
Hvis du sætter overflow:hidden; ind i body-style, kan du nøjes med meget mindre ...

-- og når jeg bruger de samme metoder til at resize frames virker det udmærket i Mozilla/Netscape ...
Avatar billede miss-g Seniormester
20. oktober 2004 - 11:51 #7
Jo, men siden har jo ikke noget med frames at gøre?? Det er et ´pop up vindue´...?

Hvad skal jeg helt eksakt skrive hvor?
Avatar billede roenving Novice
20. oktober 2004 - 12:03 #8
Det er fordi det document.body.scrollWidth/Height bruges begge steder ...

-- kan være du skal prøve med en alert, om de har værdier i popupen ?-)
Avatar billede miss-g Seniormester
20. oktober 2004 - 12:04 #9
Hæ hæ - roenving. Du taler fagsprog. Jeg ved ikke noget om javascript....
Avatar billede roenving Novice
20. oktober 2004 - 12:20 #10
Prøv at bruge denne som test-version:

<script type="text/javascript">
function winHeight(){
  alert(document.body.scrollWidth + "\n" + document.body.scrollHeight);
  window.resizeTo(document.body.scrollWidth+26,document.body.scrollHeight+59);
}
window.onload=winHeight;
</script>

-- bemærkede du iøvrigt min bemærkning om overflow, den kan du lave nemmere i kaldet: scrollbars=no i winfeatures på window.open !-)
Avatar billede miss-g Seniormester
20. oktober 2004 - 12:33 #11
Jo det bemærkede jeg - men fatter ikke hvad du mener. Hvis jeg skal bruge noget ´overflow´ hvor skal det så stå, og skal selve scriptet så være et andet?
Avatar billede roenving Novice
20. oktober 2004 - 12:44 #12
Du skal bare ændre scrollbars til no i stedet for yes i din åben vindue funktion:

<a href="#" class="font" onClick="MM_openBrWindow('pop.htm','pop','scrollbars=no,width=520,height=200')">Klik for at &aring;bne vindue</a>

-- som iøvrigt er at gå over åen efter vand, fjern script-blokken og skriv det selv:

<a href="#" class="font" onClick="window.open('pop.htm','pop','scrollbars=no,width=520,height=200');return false;">Klik for at &aring;bne vindue</a>
Avatar billede miss-g Seniormester
20. oktober 2004 - 13:06 #13
Den kommer med en alert box, hvor der står 520 og 94 ??

Indsatte den på popupsiden:
<script type="text/javascript">
function winHeight(){
  alert(document.body.scrollWidth + "\n" + document.body.scrollHeight);
  window.resizeTo(document.body.scrollWidth+26,document.body.scrollHeight+59);
}
window.onload=winHeight;
</script>

Og ændrede mit link til:
<a href="#" class="font" onClick="window.open('pop.htm','pop','scrollbars=no,width=520,height=200');return false;">Klik for at &aring;bne vindue</a>
Avatar billede miss-g Seniormester
20. oktober 2004 - 13:07 #14
Nu står der 536 og 94 efter jeg har oploadet, og nu virker det slet ikke.
Avatar billede roenving Novice
20. oktober 2004 - 14:09 #15
Det virker fint hos mig, du skal bare have fjernet al den overskudshøjde og -bredde !-)

-- og selvom der returneres forskellige værdier i IE og Mozilla (og sikkert også Opera, Safari og Camino !-), handler det jo om den forskellige måde de renderer på, så et script, som virker fuldt acceptabelt i IE og Mozilla/Netscape og acceptabelt i de andre ville være mit mål !o]

-- og når du så har nogle perfekte værdier, skal du selvfølgelig fjerne alert-linjen igen ...
Avatar billede miss-g Seniormester
20. oktober 2004 - 14:18 #16
Ja det er også fint nok med IE, Netscape og Mozilla *S* Kræver ikke mere end det *G*

Men øh - hvad mener du med at jeg skal have fjernet al den overskudshøjde? How?

Og undskyld jeg er lidt tungnem *G*
Avatar billede roenving Novice
20. oktober 2004 - 14:20 #17
Det viser sig jo nu, at du har alt for meget højde og bredde, så du skal nok tilbage i nærheden af start-værdierne jeg gav:

  window.resizeTo(document.body.scrollWidth+6,document.body.scrollHeight+32);
Avatar billede miss-g Seniormester
20. oktober 2004 - 23:21 #18
FEJL!

Som jeg skrev får jeg en fejl - se screenshot i link http://www.nicolin.dk/pop/index.htm

Så noget er galt...
------------------------------
På index står:
------------------------------
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
</script>

onClick="window.open('pop.htm','pop','scrollbars=no,width=520,height=200');return false;">Klik for at &aring;bne vindue</a>

-----------------------------
POP up vinduet:
----------------------------
<script type="text/javascript">
function winHeight(){
  alert(document.body.scrollWidth + "\n" + document.body.scrollHeight);
window.resizeTo(document.body.scrollWidth+6,document.body.scrollHeight+32);
}
window.onload=winHeight;
</script>
Avatar billede roenving Novice
20. oktober 2004 - 23:36 #19
Der er da ikke nogen fejl ?-)

-- men nu, det er konstateret, at det virker, skal du jo, som jeg skrev 14:09:23, fjerne alert-linjen ...

-- altså i popup-vinduet:

<script type="text/javascript">
function winHeight(){
  window.resizeTo(document.body.scrollWidth+6,document.body.scrollHeight+32);
}
window.onload=winHeight;
</script>

-- og så kan det godt være, at der skal fifles en smule med de 6 og de 32 ...
Avatar billede miss-g Seniormester
21. oktober 2004 - 01:03 #20
Har fjernet alert-linien. Men den virker ikke i Netscape.

SUK. Gør jeg noget forkert eller hvad?

-------------------------------------------
index:
-------------------------------------------
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
</script>

<a href="#" class="font" onClick="window.open('pop.htm','pop','scrollbars=no,width=100,height=200');return false;">Klik
    for at &aring;bne vindue</a>
-------------------------------
pop up:
-------------------------------
<script type="text/javascript">
function winHeight(){
  window.resizeTo(document.body.scrollWidth+10,document.body.scrollHeight+59);
}
window.onload=winHeight;
</script>
Avatar billede miss-g Seniormester
21. oktober 2004 - 01:09 #21
Og mens vi er i gang... Hvad skal jeg indsætte, hvis jeg vil have det i henholdsvis venstre side - midt - eller i højre side?

Skal du have flere point? *G* Jeg er jo lidt besværlig.
Avatar billede roenving Novice
21. oktober 2004 - 01:20 #22
Hrm, den er zq da lidt besværlig, for den mistolker scrollWidth som det samme som window.innerWidth, hvilket jo er noget vrøvl, men da du alligevel kender bredden, kan det vel være nok at:

<script type="text/javascript">
function winHeight(){
  window.resizeTo(510,document.body.scrollHeight+32);
}
window.onload=winHeight;
</script>

-- og placere det i en bestemt placering inkluderer en beregning, f.eks. midten:

<script type="text/javascript">
function winHeight(){
  var h = document.body.scrollHeight+32;
  window.resizeTo(510,h);
  window.moveTo((screen.availWidth-510)/2,(screen.availHeight-h)/2);
}
window.onload=winHeight;
</script>
Avatar billede miss-g Seniormester
21. oktober 2004 - 01:33 #23
Ja du har ret i at bredden er ligegyldig i dette tilfælde - den kan bare være fast.

Men hvordan får vi Netscape til at æde den? Den udvider sig godt nok - men hele tiden med extra plads rundt om tabellen.

I IE passer den fint nu.
Avatar billede roenving Novice
21. oktober 2004 - 01:43 #24
Du kan ikke sætte en fast bredde og højde (eller et forhold), som virker præcis til de forskellige browsere, for de har forskellige bredder på deres chrome-ting (og forøvrigt vil bare en tilføjelse som at menuer er med (menubar=yes !-) betyde voldsomheder, som er fuldstændig ukontrollable, så det bedste er at gøre det næsten rigtigt, og så style sine ting, så det vil svært at finde ud af ved de(t) tilfældige blik, netop den ting får ...

-- selvfølgelig er det muligt at lave noget kode, så man sætter forskellige parametre alt efter hvilken browser, som skal kigge på det, men det skal efter min opfattelse nærmest være livsnødvendigt, præcis derfor kom jeg også med udsagnet @20/10-2004 14:09:23 ...

-- hvor kodeordene er: fuldt acceptabelt og ellers acceptabelt !-)
Avatar billede miss-g Seniormester
21. oktober 2004 - 12:28 #25
Avatar billede roenving Novice
21. oktober 2004 - 14:21 #26
Egentlig kan du tage det første script og bruge råt, bortset fra, at du skal dele det en anelse op, for jeg går ikke ud fra, at det er hensigtsmæssigt at have html-koden i start-dokumentet:

<script type="text/javascript">
function getRefToDivMod( divID, oDoc ) {
    if( !oDoc ) { oDoc = document; }
    if( document.layers ) {
        if( oDoc.layers[divID] ) { return oDoc.layers[divID]; } else {
            for( var x = 0, y; !y && x < oDoc.layers.length; x++ ) {
                y = getRefToDivNest(divID,oDoc.layers[x].document); }
            return y; } }
    if( document.getElementById ) { return oDoc.getElementById(divID); }
    if( document.all ) { return oDoc.all[divID]; }
    return document[divID];
}
function resizeWinTo() {
        var idOfDiv = 'content';
    var oH = getRefToDivMod( idOfDiv ); if( !oH ) { return false; }
    var oW = oH.clip ? oH.clip.width : oH.offsetWidth;
    var oH = oH.clip ? oH.clip.height : oH.offsetHeight; if( !oH ) { return false; }
    var x = window; x.resizeTo( oW + 200, oH + 200 );
    var myW = 0, myH = 0, d = x.document.documentElement, b = x.document.body;
    if( x.innerWidth ) { myW = x.innerWidth; myH = x.innerHeight; }
    else if( d && d.clientWidth ) { myW = d.clientWidth; myH = d.clientHeight; }
    else if( b && b.clientWidth ) { myW = b.clientWidth; myH = b.clientHeight; }
    if( window.opera && !document.childNodes ) { myW += 16; }
    x.resizeTo( oW + ( ( oW + 200 ) - myW ), oH + ( (oH + 200 ) - myH ) );
}
window.onload=resizeWinTo;
</script>

-- jeg har ikke testet det, men hans udsagn er så, at du skal sætte en absolut positioneret div udenom dit indhold, altså sådan:

<div id='content' style="position:absolute;width:500px;">

<!-- Det indhold (tabellen !-) du har i forvejen -->

</div>
Avatar billede miss-g Seniormester
29. oktober 2004 - 15:02 #27
Det virker heller ikke i Netscape. Det er da til at få grå hår af!!
Avatar billede miss-g Seniormester
09. november 2004 - 01:51 #28
Ingen løsning?
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