Avatar billede sjh Nybegynder
17. november 2008 - 23:05 Der er 22 kommentarer og
1 løsning

Problem med DIV ved resize browser.

Jeg har et lille problem med et DIV som ikke flytte med ved browser resize.
Det sker når min ComboBox skal stå center og man har klikket listen ned, så flytter listen ikke med.

Det kan ses her:
http://vbhansen.dk/javascript/combobox/ (Det er "Centered box")

Nogle som ved hvordan man lige kan fixer den ?
Avatar billede olebole Juniormester
17. november 2008 - 23:27 #1
<ole>

Jeg kan ikke se nogen fejl  =)

/mvh
</bole>
Avatar billede sjh Nybegynder
18. november 2008 - 07:45 #2
hmm, Jeg er åbenbart ikke så god til at forklar problemet, så her kommer lige et screenshot. : http://vbhansen.dk/javascript/combobox/centered.png

Det sker når ComboBoxén er klikket ned og man så resizeér browser uden at ha klikket ComboBoxén væk. (Det er kun et problem på den som er centered)
Avatar billede olebole Juniormester
18. november 2008 - 09:48 #3
Aha ... nu ved jeg, hvad du mener. Du skal jo finde stedet, hvor dropdown boksen kontrolleres og så kompensere ved window.onresize. Det har jeg ikke tid til, mens jeg er på arbejde  =)
Avatar billede sjh Nybegynder
18. november 2008 - 11:42 #4
Ja window.onresize er jo fint nok, men ville helst ikke bruge de events som der kun findes én af..

Så jeg har valgt at gøre det med en timer.. eller det er måske ikke så smart at gøre det med en timer ??


  init:function()
  {
    var width = 1;
    if (window.innerWidth)
    {
      width = window.innerWidth;
    }
    else if (document.documentElement.clientWidth)
    {
      width = document.documentElement.clientWidth;
    }
    else if (document.body.clientWidth)
    {
      width = document.body.clientWidth;
    }
    if (!ComboBox.resizeCurrent)
    {
      ComboBox.resizeCurrent = width;
      ComboBox.init();
      return;
    }
    else
    {
      if (ComboBox.resizeCurrent != width)
      {
        ComboBox.resizeCurrent = width;
        var obj = document.getElementsByTagName('table');
        for (var i = 0; i < obj.length; i++)
        {
          if (typeof(obj[i].ComboBox) == 'object')
          {
            obj[i].ComboBox.hideDropDown();
          }
        }
      }
    }
    window.setTimeout('ComboBox.init()', 100);
  }
Avatar billede roenving Novice
18. november 2008 - 11:55 #5
'kun findes en af', hvad mener du ?-)
Avatar billede sjh Nybegynder
18. november 2008 - 12:01 #6
øh ikke forstået ??
Avatar billede sjh Nybegynder
18. november 2008 - 12:04 #7
hæ hæ..

window.onresize = function()
{
// kode 1
};

window.onresize = function()
{
// kode 2
};

Kun kode 2 vil virke..
Avatar billede sjh Nybegynder
18. november 2008 - 12:31 #8
Hvis ellers bare jeg kunne få onmove til at virke i Firefox og alle de andre browser så havede det jo været fint..

<p align="center">
  <table onmove="alert('onmove')">
    <tr>
      <td>onmove</td>
    </tr>
  </table>
</p>
Avatar billede sjh Nybegynder
18. november 2008 - 12:33 #9
Avatar billede sjh Nybegynder
18. november 2008 - 16:19 #10
Når nu tror jeg sq den er hjemme.. Jeg bruger nu setInterval() og clearInterval() så tjekker den kun når DIVét er synligt..

  hideDropDown:function()
  {
  /*
    kode..
  */

    if (this.TimerId)
    {
      clearInterval(this.TimerId);
      this.TimerId = -1;
    }
  },
  showDropDown:function()
  {
    var gPos = this.getPosition();

  /*
    mere kode..
  */
   
    var Me = this;
    this.Top = gPos.top;
    this.Left = gPos.left;
    this.TimerId = setInterval(function()
    {
      var gPos = Me.getPosition();
      if ((Me.Top != gPos.top) || (Me.Left != gPos.left))
      {
        Me.hideDropDown();
      }
    },100);
  }
Avatar billede sjh Nybegynder
18. november 2008 - 16:22 #11
En anden ting..

Skal de kaldes med window.setInterval() / window.clearInterval() eller betyder det ikke noget. ?
Avatar billede w13 Novice
18. november 2008 - 16:25 #12
Mener du, om der skal "window." foran, eller hvad er spørgsmålet?
Avatar billede w13 Novice
18. november 2008 - 16:26 #13
"window." er nemlig altid valgfrit, så det behøves ikke.

Ellers burde man også skrive:

window.alert("Hello World");
Avatar billede sjh Nybegynder
18. november 2008 - 16:30 #14
hæ hæ Ja..

Jeg var bare ikke sikker på om det kunne have en betydning i ældre browser..
Avatar billede w13 Novice
18. november 2008 - 16:46 #15
Det mener jeg ikke. Men det ved Olebole og Roenving vist. =)
Avatar billede w13 Novice
18. november 2008 - 17:09 #16
Prøv at se Oleboles forklaring her: http://www.eksperten.dk/spm/594107
Avatar billede sjh Nybegynder
18. november 2008 - 17:23 #17
Hæ hæ.. Olebole er så skrap til den slags.. :D
Avatar billede roenving Novice
19. november 2008 - 16:16 #18
Mht. ældre bowsere, så er det nærmest tværtom, da f.eks. location-objektet i de første DOMs var en fritstående objekt og derfor ikke kunne nås med window.location, så var det i en periode både på document- og window-elementerne, mens det nu kun findes som en property på window-objektet (som også kaldes det globale objekt, som gerne må udelades !-)
Avatar billede sjh Nybegynder
19. november 2008 - 23:06 #19
Kan i ikke smide et par. svar..
Avatar billede roenving Novice
20. november 2008 - 00:12 #20
>>sjh 18/11-2008 12:04:48

-- man kan jo bare:

window.onresize = function(){
  // kode 1
  // kode 2
};
Avatar billede sjh Nybegynder
20. november 2008 - 06:32 #21
roenving: Ja jeg ved jo godt at der kan køres flere funktioner under en event :D

Problemet er bare at så skal jeg lige prøvet et eller andet script som måske også bruger onresize og så går det galt, fordi Jeg måske har glemt at jeg også selv bruger onresize og opdager ikke fejlen da den onresize ikke er synlig før DropDown er nede..
Avatar billede sjh Nybegynder
25. november 2008 - 22:50 #22
Kan i ikke smide et par. svar..
Avatar billede sjh Nybegynder
05. januar 2009 - 14:30 #23
Når det ser ikke ud til at det er så nemt at komme af med point til jer..

Så lad os da starte på det nye år og glemme de point, men tak for hjælpen den slipper i ikke for.. :D
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