Ergebnis 1 bis 8 von 8

Thema: Javascript: IE (7) zickt mit Doctype rum.

  1. #1
    Azubi(ne)
    Registriert seit
    10.06.2007
    Ort
    Nähe Dresden
    Beiträge
    54
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Javascript: IE (7) zickt mit Doctype rum.

    Hi, ich hab ein Problem mit dem IE (meine Version ist die 7, wie es bei anderen ist, weiß ich jetzt nicht genau).
    Hergang meines Problems:
    Da ich mein Projekt nicht im Web veröffentliche hab ich den Doctype in all meinen Dokumenten anfangs vollkommen weggelassen.
    Als dann aber das CSS-Dropdown-Menü nicht droppen wollte, hab ich einen Doctype reingemacht und alles klappte ganz Prima.
    Nun hab ich einen JS-Slider an der Seite, der normalerweise immer mitscrollen Sollte. Macht er aber nicht (bin mir nicht ganz sicher, aber ich denke im IE6 ging es noch).
    Nun hab ich den Doctype wieder rausgemacht und siehe da: er scrollt mit -.-
    Ich hab nun die Wahl: entweder Slider slidet nicht oder Dropmenü droppt nicht.
    Hier mein Doctype:

    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http&#58;//www.w3.org/TR/html4/loose.dtd">
    Hier der Quellcode für den Slider (nur zur Vollständigkeit; der Fehler liegt, denke ich, woanders):

    Code:
    <span ID="slide" style="position&#58; absolute; left&#58; 4px; top&#58; 0px;">
    <table   CELLSPACING="0" BORDER="0" CELLPADDING="0" ALIGN="left" style="position&#58;absolute; top&#58; -60px; left&#58; -100px;">
    <tr><td class="slider">   [img]bilder/play.gif[/img]      </td></tr>
    </table>
    </span>
    
    
    
    <script LANGUAGE="JavaScript">
    <!--
            self.onError=null;
    
            currentX = currentY = 0;
            whichIt = null;
            lastScrollX = -144; lastScrollY = -288;
    
            NS = &#40;document.layers&#41; ? 1 &#58; 0;
            IE = &#40;document.all&#41; ? 1&#58; 0;
    
            function heartBeat&#40;&#41; &#123;
    
                    if&#40;IE&#41; &#123; diffY = document.body.scrollTop; diffX = document.body.scrollLeft; &#125;
                if&#40;NS&#41; &#123; diffY = self.pageYOffset; diffX = self.pageXOffset; &#125;
    
                    if&#40;diffY != lastScrollY&#41; &#123;
                            percent = .07 * &#40;diffY - lastScrollY&#41;;
                            if&#40;percent > 0&#41; percent = Math.ceil&#40;percent&#41;;
                            else percent = Math.floor&#40;percent&#41;;
                                            if&#40;IE&#41; document.all.slide.style.pixelTop += percent;
                                            if&#40;NS&#41; document.slide.top += percent;
                            lastScrollY = lastScrollY + percent;
                &#125;
                    if&#40;diffX != lastScrollX&#41; &#123;
                            percent = .1 * &#40;diffX - lastScrollX&#41;;
                            if&#40;percent > 0&#41; percent = Math.ceil&#40;percent&#41;;
                            else percent = Math.floor&#40;percent&#41;;
                            if&#40;IE&#41; document.all.slide.style.pixelLeft += percent;
                            if&#40;NS&#41; document.slide.left += percent;
                            lastScrollX = lastScrollX + percent;
                    &#125;
            &#125;
            function checkFocus&#40;x,y&#41; &#123;
            var totalY, totalX;
                    floatx = document.slide.pageX;
                    floaty = document.slide.pageY;
                    floatwidth = document.slide.clip.width;
                    floatheight = document.slide.clip.height;
    
                            if&#40;20 == 0&#41; totalY = floatheight;
                            else totalY = 25;
                            if&#40;0 == 0&#41; totalX = floatwidth;
                            else totalX = 0;
                    if&#40; &#40;x > floatx && x < &#40;floatx+totalX&#41;&#41; && &#40;y > floaty && y < &#40;floaty+totalY&#41;&#41;&#41; return true;
                    else return false;
            &#125;
            function grabIt&#40;e&#41; &#123;
                    if&#40;IE&#41; &#123;
                            whichIt = event.srcElement;
                            while &#40;whichIt.id.indexOf&#40;"slide"&#41; == -1&#41; &#123;
                                    whichIt = whichIt.parentElement;
                                    if &#40;whichIt == null&#41; &#123; return true; &#125;
                        &#125;
                            whichIt.style.pixelLeft = whichIt.offsetLeft;
                        whichIt.style.pixelTop = whichIt.offsetTop;
                            currentX = &#40;event.clientX + document.body.scrollLeft&#41;;
                            currentY = &#40;event.clientY + document.body.scrollTop&#41;;
    
                            if&#40;20 == 0&#41; totalY = whichIt.style.pixelHeight;
                            else totalY = 20;
                            if&#40;0 == 0&#41; totalX = whichIt.style.pixelWidth;
                            else totalX = 0;
                            if&#40;!&#40;event.clientX > whichIt.offsetLeft && event.clientX < whichIt.offsetLeft + totalX&#41; ||
                            !&#40;currentY > whichIt.offsetTop && currentY < whichIt.offsetTop + totalY&#41;&#41; whichIt = null;
                    &#125; else &#123;
                    window.captureEvents&#40;Event.MOUSEMOVE&#41;;
                    if&#40;checkFocus &#40;e.pageX,e.pageY&#41;&#41; &#123;
                            whichIt = document.slide;
                            FloatTouchedX = e.pageX-document.slide.pageX;
                            FloatTouchedY = e.pageY-document.slide.pageY;
                    &#125;
                    &#125;
                return true;
            &#125;
    
            function moveIt&#40;e&#41; &#123;
                    if &#40;whichIt == null&#41; &#123; return false; &#125;
                    if&#40;IE&#41; &#123;
                        newX = &#40;event.clientX + document.body.scrollLeft&#41;;
                        newY = &#40;event.clientY + document.body.scrollTop&#41;;
                        distanceX = &#40;newX - currentX&#41;;    distanceY = &#40;newY - currentY&#41;;
                        currentX = newX;    currentY = newY;
                        whichIt.style.pixelLeft += distanceX;
                        whichIt.style.pixelTop += distanceY;
                            if&#40;whichIt.style.pixelTop < document.body.scrollTop&#41; whichIt.style.pixelTop = document.body.scrollTop;
                            if&#40;whichIt.style.pixelLeft < document.body.scrollLeft&#41; whichIt.style.pixelLeft = document.body.scrollLeft;
                            if&#40;whichIt.style.pixelLeft > document.body.offsetWidth - document.body.scrollLeft - whichIt.style.pixelWidth - 20&#41; whichIt.style.pixelLeft = document.body.offsetWidth - whichIt.style.pixelWidth - 20;
                            if&#40;whichIt.style.pixelTop > document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5&#41; whichIt.style.pixelTop = document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5;
                            event.returnValue = false;
                    &#125; else &#123;
                            whichIt.moveTo&#40;e.pageX-FloatTouchedX,e.pageY-FloatTouchedY&#41;;
                    if&#40;whichIt.left < 0+self.pageXOffset&#41; whichIt.left = 0+self.pageXOffset;
                    if&#40;whichIt.top < 0+self.pageYOffset&#41; whichIt.top = 0+self.pageYOffset;
                    if&#40; &#40;whichIt.left + whichIt.clip.width&#41; >= &#40;window.innerWidth+self.pageXOffset-17&#41;&#41; whichIt.left = &#40;&#40;window.innerWidth+self.pageXOffset&#41;-whichIt.clip.width&#41;-17;
                    if&#40; &#40;whichIt.top + whichIt.clip.height&#41; >= &#40;window.innerHeight+self.pageYOffset-17&#41;&#41; whichIt.top = &#40;&#40;window.innerHeight+self.pageYOffset&#41;-whichIt.clip.height&#41;-17;
                    return false;
                    &#125;
                return false;
            &#125;
            function dropIt&#40;&#41; &#123;
                    whichIt = null;
                if&#40;NS&#41; window.releaseEvents &#40;Event.MOUSEMOVE&#41;;
                return true;
            &#125;
            if&#40;NS&#41; &#123;
                    window.captureEvents&#40;Event.MOUSEUP|Event.MOUSEDOWN&#41;;
                    window.onmousedown = grabIt;
                    window.onmousemove = moveIt;
                    window.onmouseup = dropIt;
            &#125;
            if&#40;IE&#41; &#123;
                    document.onmousedown = grabIt;
                    document.onmousemove = moveIt;
                    document.onmouseup = dropIt;
            &#125;
            if&#40;NS || IE&#41; action = window.setInterval&#40;"heartBeat&#40;&#41;",1&#41;;
    // -->
    </script>


    Im Opera funktioniert alles ganz prima.
    Mozilla zeigt nichtmal das Bild vom Slider an, was aber auch nicht weiter wichtig ist, da die Seite automatisch mit dem IE gestartet wird.

    Ist nun an meinem Doctype irgendwas verkehrt, oder fehlt nur etwas, das das Problem schon beheben könnte?

    Ich hoffe jemand kann mir bei dem verzwickten Problem weiterhelfen... :/
    Gruß, Shinarya!
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Thonixx
    Gast

    Standard

    Wo ist den dein Rest des Codes?:
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http&#58;//www.w3.org/TR/html4/loose.dtd">
    <html>
    <head><title>Deine Seite</title>
    </head>
    <html>
    ...............der ganze html code deiner seite...........
    </html>
    Ich weiss nicht obs daran liegt, dass du kein <html> <head> und deren Schlusstags benutzt?

  3. #3
    Azubi(ne)
    Themenstarter

    Registriert seit
    10.06.2007
    Ort
    Nähe Dresden
    Beiträge
    54
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Nein natürlich nicht.
    Ich hab ja schon herausgefunden, dass das Problem am Doctype liegt.
    Da brauch ich hier nicht meinen gesamten Quellcode posten, den sich am Ende eh keiner durchlesen will.

  4. #4
    Thonixx
    Gast

    Standard

    Ach so. Das DOCTYPE hab ich mir nicht durchgelesen. Hat von weitem richtig ausgeschaut.

  5. #5
    Azubi(ne)
    Themenstarter

    Registriert seit
    10.06.2007
    Ort
    Nähe Dresden
    Beiträge
    54
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Könnte sich das vielleicht nochmal einer anschauen?

    (*push* ^^)

  6. #6
    der/die Göttliche Avatar von jojo87
    Registriert seit
    23.03.2007
    Ort
    Leipzig
    Alter
    30
    Beiträge
    3.131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Schaut so aus, als ob der IE7 unbedingt den Quirksmode braucht.
    Schau doch mal nach einem Doctype, der ihn in den Quirksmode setzt, die anderen Browser aber im standards-compliance-mode belässt (bei XHTML geht das z.Bsp. durch das voranfügen der xml-notation).

    Ich habs jetzt leider nicht im Kopf, solltest du aber mit Google gelöst bekommen.

    Gruß,
    Jojo

  7. #7
    Azubi(ne)
    Themenstarter

    Registriert seit
    10.06.2007
    Ort
    Nähe Dresden
    Beiträge
    54
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Kann damit jetzt zwar überhaupt nix richtig anfangen, werd mir das mit dem Quirksmode etc. aber mal ansehen.
    Danke für den Tipp

  8. #8
    Azubi(ne)
    Themenstarter

    Registriert seit
    10.06.2007
    Ort
    Nähe Dresden
    Beiträge
    54
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Hm, nun hab ich den IE7 in den Quirksmode gesetzt, Folge dessen ist aber nun, dass zwar der JS-Slider geht, aber das CSS-Menü nicht.
    Ich schätze da werd ich wohl das CSS-Menü mal umkrempeln müssen...


    Edit: zum Auffrischen:
    Der Quirksmode wird aktiviert, wenn man den Doctype weglässt oder zB eine relative URL zum DTD des W3C angibt
    Opera lässt sich allerdings nich in den Modus versetzten.

Ähnliche Themen

  1. preg_replace_callback zickt
    Von The User im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 10.06.2008, 18:50
  2. php navigation - code, zickt manchmal
    Von SeekeR im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 17.02.2008, 19:28
  3. Unnötiger Abstand - Opera zickt
    Von MaryJane im Forum HTML & CSS Forum
    Antworten: 16
    Letzter Beitrag: 12.01.2008, 21:10
  4. IE zickt bei CSS ?
    Von Barret im Forum HTML & CSS Forum
    Antworten: 11
    Letzter Beitrag: 22.10.2006, 16:16
  5. hm pc zickt rum
    Von Toon im Forum Computer - Internet Forum
    Antworten: 3
    Letzter Beitrag: 03.03.2005, 15:29

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •