Avatar billede Slettet bruger
24. september 2006 - 13:19 Der er 19 kommentarer og
2 løsninger

ClientWidth & height

Hej eksperter.
Jeg har problemer med

alert(document.body.clientWidth+'/'+document.body.clientHeight);
Det virker ikke rigtigt den melder fejl i den linje.
Fejlen: 'Et objekt er obligatorisk'.

Håber I kan hjælpe mig!?
Avatar billede Slettet bruger
24. september 2006 - 13:23 #1
Har fundet noget her, men kan bare ikke selv få det til at virke:
http://www.quirksmode.org/js/doctype_on.html
Avatar billede webudvikleren Nybegynder
24. september 2006 - 15:07 #2
Dette virker da fint - hvad mener du med du har 'problemer' ?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script type="text/JavaScript">
    function test() {
          var str = document.body.clientHeight+"/";
              str += document.body.clientWidth+"\n";
            alert(str);
      }

</script>
</head>

<body>

<div style="white-space:nowrap">

<button onclick="test()">TEST</button>
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
</div>

</body>
</html>
Avatar billede webudvikleren Nybegynder
24. september 2006 - 15:09 #3
Nærmere

    function test() {

    var bredde = (document.all) ? document.body.clientWidth : window.innerWidth;
    var hoejde = (document.all) ? document.body.clientHeight : window.innerHeight;

          var str = bredde+"/";
                str += hoejde+"\n";
            alert(str);
      }
Avatar billede Slettet bruger
24. september 2006 - 18:16 #4
Men jeg vil vide hvor stort vinduet er som brugeren har åbent.
Den sidste du har postede virker ikke.
Avatar billede webudvikleren Nybegynder
24. september 2006 - 18:20 #5
Dette fungere da fint hos mig?..


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script type="text/JavaScript">
    function test() {

    var bredde = (document.all) ? document.body.clientWidth : window.innerWidth;
    var hoejde = (document.all) ? document.body.clientHeight : window.innerHeight;

          var str = bredde+"/";
                str += hoejde+"\n";
            alert(str);
      }

</script>
</head>

<body>
<script type="text/javascript">test();</script>

</body>
</html>
Avatar billede Slettet bruger
24. september 2006 - 19:43 #6
Nu virker den, men bare ikke ordenligt. :D
Den alert'er 984/0.
Avatar billede webudvikleren Nybegynder
24. september 2006 - 20:03 #7
Hmm - tror vi må vente til olebole, roenving eller mclemens kommer forbi - for ved mig, virker højden ikke - kun bredden.

Synes det er lidt underligt, for nu har jeg også prøvet denne - dog virker den hellere ikke;

    function test() {
   
    var hoejde, bredde;
   
          bredde = window.innerWidth ? window.innerWidth :
window.documentElement ? window.documentElement.offsetWidth :
document.body.offsetWidth;

          hoejde = window.innerHeight ? window.innerHeight :
window.documentElement ? window.documentElement.offsetHeight :
document.body.offsetHeight;

          var str = bredde+"/";
              str += hoejde+"\n";
            alert(str);
    }


---------------------------
Output i IE: 1239/0  - UKORREKT
Output i FF: 1280/801 - KORREKT
---------------------------
Avatar billede mclemens Nybegynder
24. september 2006 - 20:49 #8
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script type="text/JavaScript">
    function test() {

    var bredde = (t=document.documentElement.clientWidth)? t : window.innerWidth;
    var hoejde = (t=document.documentElement.clientHeight)? t : window.innerHeight;

          var str = bredde+"/";
                str += hoejde+"\n";
            alert(str);
      }

</script>
</head>

<body>
<script type="text/javascript">test();</script>

</body>
</html>
Avatar billede webudvikleren Nybegynder
24. september 2006 - 20:51 #9
Det fungere! - hehe, forstår bare ikke hvorfor det så gik galt med mine eksempler, da jeg også brugte innerHeight og clientHeight, men ingen ved det..

mclemens har endnu engang ret :-)
Avatar billede mclemens Nybegynder
24. september 2006 - 20:54 #10
Fordi du ikke er i quirks, prøv at slette doctypen ;)
... Hvis man koder i quirks eller koden skal tage hensyn til quirks kunne man

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script type="text/JavaScript">
    function test() {

    var bredde = (t=document.documentElement.clientWidth)? t : (t=document.body.clientWidth)? t : window.innerWidth;
    var hoejde = (t=document.documentElement.clientHeight)? t : (t=document.body.clientHeight)? t : window.innerHeight;

          var str = bredde+"/";
                str += hoejde+"\n";
            alert(str);
      }

</script>
</head>

<body>
<script type="text/javascript">test();</script>

</body>
</html>
Avatar billede mclemens Nybegynder
24. september 2006 - 20:55 #11
Kast et svar webudvikleren, det er en deler
det var jo blot et lille puf i koden ;)
Avatar billede webudvikleren Nybegynder
24. september 2006 - 20:56 #12
Fordi du ikke er i quirks, prøv at slette doctypen ;)

"quirks" ??

-- Det vil sige, det kun virker ved en doctype i HTML og ikke (X)HTML, siden du har ændret doctypen fra (X)html til HTML ??
Avatar billede webudvikleren Nybegynder
24. september 2006 - 20:56 #13
Hov .. hvad i alverden fabler jeg om.. har da ikke haft en XHTML doctype, sorry.. my bad..
Avatar billede mclemens Nybegynder
24. september 2006 - 20:57 #14
Det virker i begge dele ;)
Avatar billede webudvikleren Nybegynder
24. september 2006 - 20:58 #15
Svar
Avatar billede mclemens Nybegynder
24. september 2006 - 21:00 #16
... Men, hvis det er xhtml med xml deklarationen før doctypen, så ryger IE i quirks og højde / bredde lægger på body istedet - det samme gælder ved ufuldstændig doctype ...
- Løsningen på xhtml problemet er så at gøre xml deklarationen betinget ( http://www.eksperten.dk/spm/719030#rid6329210 - der er både til php / asp og asp.net ) - med betinget xml deklaration ved xhtml så overholder IE også css ordentligt :) )
Avatar billede mclemens Nybegynder
24. september 2006 - 21:01 #17
(((edit: hvis det er xhtml med xml deklarationen før doctypen, så ryger
IE i quirks ( << - gælder også ved kommentarer og andet godt ... ))))
Avatar billede mclemens Nybegynder
25. september 2006 - 03:01 #18
Fandt lige en tråd Rønving var i ( http://www.eksperten.dk/spm/731879 ) og jeg læste Ole's kommentar til Rønving ville jeg lige teste om min ramte rigtigt i OP, det gjorde den ikke helt så her er den rigtige:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

var op=(navigator.userAgent.indexOf('Opera')!=-1);

window.onload=function(){

var w = ((t=document.documentElement.clientWidth)&&(!op))? t : (t=document.body.clientWidth)? t : window.innerWidth;

var h = ((t=document.documentElement.clientHeight)&&(!op))? t : (t=document.body.clientHeight)? t : window.innerHeight;

alert("Bredde: "+w+"\n"+"Højde: "+h);

}
</script></head><body>
</body></html>
Avatar billede mclemens Nybegynder
25. september 2006 - 04:14 #19
Forbedrede den lige en tand i
http://www.eksperten.dk/spm/731879
Avatar billede mclemens Nybegynder
28. september 2006 - 19:40 #20
Jeg gik nok lidt for meget igang med at forkorte ...
så meget at det gik galt (forsøgte på at undgå checket på Opera) ...
Det havde dog den sideeffekt at hvis dokumentet blev højere end
vinduet så gik det galt ... max returnerede så selve sidens højde istedet...

Tag derfor evt. 03:01:38 eller denne her istedet:

<script type="text/javascript">
window.onload=function(){
  w=cwh("Width");
  h=cwh("Height");
  alert("Bredde: "+w+"\n"+"Højde: "+h);
}

var op=(navigator.userAgent.indexOf('Opera')!=-1);

function cwh(e){
return ((t=document.documentElement["client"+e])&&(!op))? t : (t=document.body["client"+e])? t : window["inner"+e];
}
</script>



... M.h.t. selve fejlen i spørgsmålet ...
[ Det virker ikke rigtigt den melder fejl i den linje.
Fejlen: 'Et objekt er obligatorisk'. ]

Så er det nok fordi at dom ikke er klar, prøv at aktivere din kode
via. en <body onload=""> handler eller window.onload)=function(){}
eller via addEventListener / attachEvent ...
Avatar billede Slettet bruger
21. december 2006 - 23:40 #21
tak til jer begge (mclemens & webudvikleren)
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