+ Antworten
Ergebnis 1 bis 3 von 3

Thema: Spry Akkordeon im IE8 grässlich animiert - bei alle anderen Browsern ok...

  1. #1
    TP-Newbie rolli20up macht alles soweit korrekt
    Registriert seit
    Oct 2011
    Beiträge
    2

    Spry Akkordeon im IE8 grässlich animiert - bei alle anderen Browsern ok...

    Hallo an alle,

    habe ein Spry Akkordeon erstellt.
    Es wird in allen Browsern richtig animiert, nur der IE8 macht es nicht schön.
    Beispielvideo hier von mir zur besseren Veranschaulichung.
    http://www.youtube.com/watch?v=GAEK2XXtsUE
    Bitte helft, es ist dringend.
    Zur Falschdarstellung kann ich noch beschreiben, das im IE8 das Problem nur auftritt, wenn der Zoom im IE so groß gestellt ist, dass nicht alle Panel (wenn einer geöffnet ist) in den Fensterausschnitt des Browsers passen. Quasi, wenn der Browser scrollen muss.
    Vielleicht hilft es euch weiter.

    Danke. Danke.

    rolli20up

    Anbei der html Code:

    HTML-Code:
    <!DOCTYPE html>
    <html>
    
    <head>
        <title>Mitarbeiter - Physiotherapie Sommer</title>
    
        <meta charset="UTF-8"/>
        <meta name="description" content=""/>
        <meta name="author" content=""/>
        <meta name="keywords" content=""/>
        <meta name="generator" content="Webocton - Scriptly (www.scriptly.de)"/>
    
        <link href="style.css" type="text/css" rel="stylesheet"/>
        <link href="favicon.ico" type="image/x-icon" rel="shortcut icon"/>
        <script src="SpryAccordion.js" type="text/javascript"></script>
        <link href="SpryAccordion.css" rel="stylesheet" type="text/css">
        <script>
        document.createElement("header");
        document.createElement("nav");
        document.createElement("section");
        document.createElement("aside");
        document.createElement("footer");
        </script>
    </head>
    
    <body>
    <div id="wrapper">
    <header>
    
    </header>
    <nav>
     <ul>
      <li><a href="index.htm">Startseite</a></li>
      <li><a href="aktuelles.htm">Aktuelles</a></li>
      <li><p>Unsere Mitarbeiter</p></li>
      <li><a href="unsere-raeume.htm">Unsere Räume</a></li>
      <li><a href="therapien.htm">Therapien </a></li>
      <li><a href="wellness.htm">Wellness</a></li>
      <li><a href="praevention.htm">Prävention</a></li>
      <li><a href="gutscheine.htm">Gutscheine</a></li>
      <li><a href="so-erreichen-sie-uns.htm">So erreichen Sie uns</a></li>
      <li><a href="impressum.htm">Impressum</a></li>
     </ul>
    </nav>
    <aside>
    <img class="schatten" src="bilder/DSC_0338fv.png" alt="Mitarbeiterfoto Physiotherapie Sommer" width="235" height="206" style="border: 0px;" />
    </aside>
    <section>
     <h1>Unsere Mitarbeiter </h1>
    
    
    
     <div id="worker">
       <div id="Accordion1" class="Accordion" tabindex="0">
         <div class="AccordionPanel">
           <div id="sommer" class="AccordionPanelTab">
             <div id="name"><h4>Heidemarie Sommer</h4>
             <p>Physiotherapeutin &amp; Praxisinhaberin</p></div>
             <div id="em"><em>weitere Details klicken</em></div>
             </div>
           <div class="AccordionPanelContent">
           <div class="bgtop"></div>
           <div class="bgcontent">
              <img src="bilder/bild-detail-sommer.gif" width="170" height="149" style="border: 0px; float: right; " />
            <h5>Spezialgebiete</h5>
             <ul class="spezialgebiete">
                <li>Manuelle Therapie</li>
                <li>Fußreflexzonentherapie</li>
                <li>Manipulativmassage</li>
                <li>Dorn-Methode</li>
                <li>Skoliosetherapie nach Schroth</li>
                <li>Rückenschule</li>
                <li>Spinaltherapie</li>
                <li>Knorpelrehabilitation</li>
             </ul>
             <br />
             <h5>Ausbildung</h5>
             <p>Ausbildung zur Physiotherapeutin an der Medizinischen Fachschule des Carl-Thiem-Klinikum in Cottbus. Arbeitete danach als Physiotherapeutin bis 1991 in der Poliklinik Spremberg. Eröffnete am 01.03.1991 in den Räumen der Poliklinik ihre eigene Praxis mit zwei Mitarbeitern. Seit dem 01.07.1996 befindet sich ihre Praxis in der Dresdener Straße 41 in Spremberg.</p></div>
            <div class="bgbottom"></div>
             </div>
         </div>
        <div class="AccordionPanel">
           <div id="krause" class="AccordionPanelTab">
              <div id="name"><h4>Heidrun Krause</h4>
             <p>Physiotherapeutin &amp; stellv. Praxisinhaberin</p></div>
              <div id="em"><em>weitere Details klicken</em></div>
             </div>
           <div class="AccordionPanelContent">
           <div class="bgtop"></div>
           <div class="bgcontent">
           <img src="bilder/bild-detail-krause.gif" alt="Heidrun Krause" title="Heidrun Krause" width="170" height="149" style="border: 0px; float: right;" />
            <h5>Spezialgebiete</h5>
             <ul class="spezialgebiete">
                <li>Manuelle Therapie</li>
                <li>Fußreflexzonentherapie</li>
                <li>Manipulativmassage</li>
                <li>Dorn-Methode</li>
                <li>Skoliosetherapie nach Schroth</li>
                <li>Ying-Yang-Meridianmassage</li>
                <li>Spinaltherapie</li>
                <li>Muskelentspannung nach Jacobson</li>
                <li>Idogo- / QiGong Therapie</li>
                <li>Schröpfen</li>
                <li>Rehasport</li>
             </ul>
             <br />
             <h5>Ausbildung</h5>
             <p>Ausbildung zur Physiotherapeutin an der Medizinischen Fachschule des Carl-Thiem-Klinikum in Cottbus. Arbeitete danach als Physiotherapeutin bis 1991 in der Poliklinik Spremberg und ist seit dem 01.03.1991 in unserer Praxis tätig.</p></div>
            <div class="bgbottom"></div>
             </div>
         </div>
        <div class="AccordionPanel">
           <div id="stolle" class="AccordionPanelTab">
             <div id="name"><h4>Hannelore Stolle</h4>
             <p>Physiotherapeutin</p></div>
             <div id="em"><em>weitere Details klicken</em></div>
             </div>
           <div class="AccordionPanelContent">
           <div class="bgtop"></div>
           <div class="bgcontent">
           <img src="bilder/bild-detail-stolle.gif" alt="Hannelore Stolle" title="Hannelore Stolle" width="170" height="149" style="border: 0px; float: right;" />
            <h5>Spezialgebiete</h5>
             <ul class="spezialgebiete">
                <li>Lymphdrainage</li>
                <li>Marnitztherapie</li>
                <li>Manipulativmassage</li>
                <li>Rückenschule</li>
                <li>Rehasport</li>
             </ul>
             <br />
             <h5>Ausbildung</h5>
             <p>Ausbildung zur Physiotherapeutin an der Medizinischen Fachschule des Carl-Thiem-Klinikum in Cottbus. Arbeitete danach als Physiotherapeutin bis 1991 in der Poliklinik Spremberg und ist seit dem 01.03.1991 in unserer Praxis tätig.</p></div>
            <div class="bgbottom"></div>
             </div>
         </div>
        <div class="AccordionPanel">
           <div id="dennhard" class="AccordionPanelTab">
             <div id="name"><h4>Katrin Dennhardt</h4>
             <p>Physiotherapeutin</p></div>
             <div id="em"><em>weitere Details klicken</em></div>
             </div>
           <div class="AccordionPanelContent">
           <div class="bgtop"></div>
           <div class="bgcontent">
           <img src="bilder/bild-detail-dennhard.gif" alt="Katrin Dennhardt" title="Katrin Dennhardt" width="170" height="149" style="border: 0px; float: right;" />
            <h5>Spezialgebiete</h5>
             <ul class="spezialgebiete">
                <li>Manuelle Therapie</li>
                <li>Fußreflexzonentherapie</li>
                <li>Manipulativmassage</li>
                <li>Dorn-Methode</li>
                <li>Skoliosetherapie nach Schroth</li>
                <li>Ying-Yang-Meridianmassage</li>
                <li>Migränetherapie</li>
                <li>Muskelentspannung nach Jacobson</li>
                <li>Idogo- / QiGong Therapie</li>
                <li>Orthopädische präventive Rückenschule</li>
                <li>Rehasport</li>
             </ul>
             <br />
             <h5>Ausbildung</h5>
             <p>Von 1994-1997 Umschulung zur Physiotherapeutin an der medizinischen Fachschule des Carl-Thiem-Klinikum. Arbeitete danach als Physiotherapeutin in Cottbus und ist seit dem 01.01.2001 in unserer Praxis tätig.</p></div>
            <div class="bgbottom"></div>
             </div>
         </div>
        <div class="AccordionPanel">
           <div id="palme" class="AccordionPanelTab">
             <div id="name"><h4>Sabine Palme</h4>
             <p>med. Servicekraft</p></div>
             <div id="em"><em>weitere Details klicken</em></div>
             </div>
           <div class="AccordionPanelContent">
           <div class="bgtop"></div>
           <div class="bgcontent">
           <img src="bilder/bild-detail-palme.gif" alt="Sabine Palme" title="Sabine Palme" width="170" height="149" style="border: 0px; float: right;" />
            <h5>Aufgabenbereich</h5>
             <ul class="spezialgebiete">
                <li>Moorpackungen</li>
                <li>Anmeldungen</li>
                <li>alle Nebentätigkeiten, welche die Fachkräfte entlasten</li>
             </ul>
             <br />
             <h5></h5>
             <p>Ist als medizinische Servicekraft seit 01.02.2008 in unserer Praxis tätig.</p></div>
            <div class="bgbottom"></div>
             </div>
         </div>
         <div class="AccordionPanel">
           <div id="patzelt" class="AccordionPanelTab">
             <div id="name"><h4>Evelyn Patzelt</h4>
             <p>Physiotherapeutin</p></div>
             <div id="em"><em>weitere Details klicken</em></div>
             </div>
           <div class="AccordionPanelContent">
           <div class="bgtop"></div>
           <div class="bgcontent">
           <img src="bilder/bild-detail-patzelt.gif" alt="Evelyn Patzelt" title="Evelyn Patzelt" width="170" height="149" style="border: 0px; float: right;" />
            <h5>Spezialgebiete</h5>
             <ul class="spezialgebiete">
                <li>Manuelle Therapie</li>
                <li>Krankengymnastik nach Bobath</li>
                <li>Manipulativmassage</li>
                <li>Skoliosetherapie nach Schroth</li>
             </ul>
             <br />
             <h5>Ausbildung</h5>
             <p>Von 1994-1997 Umschulung zur Physiotherapeutin an der medizinischen Fachschule des Carl-Thiem-Klinikum. Seit dem 20.05.1997 als Physiotherapeutin in unserer Praxis tätig.</p></div>
            <div class="bgbottom"></div>
             </div>
         </div>
    
        <div class="AccordionPanel">
           <div id="kretschmar" class="AccordionPanelTab">
             <div id="name"><h4>Katrin Kretzschmar</h4>
             <p>Physiotherapeutin</p></div>
             <div id="em"><em>weitere Details klicken</em></div>
             </div>
           <div class="AccordionPanelContent">
           <div class="bgtop"></div>
           <div class="bgcontent">
           <img src="bilder/bild-detail-kretschmar.gif" alt="Katrin Kretzschmar" title="Katrin Kretzschmar" width="170" height="149" style="border: 0px; float: right;" />
            <h5>Spezialgebiete</h5>
             <ul class="spezialgebiete">
                <li>Lymphdrainage</li>
                <li>Fußreflexzonentherapie</li>
                <li>Manipulativmassage</li>
                <li>Dorn-Methode</li>
                <li>Osteoporose / Funktionstraining</li>
                <li>Nordic Walking</li>
                <li>Schröpfen</li>
                <li>Marnitztherapie</li>
                <li>Knorpelrehabilitation</li>
                <li>Rehasport</li>
             </ul>
             <br />
             <h5>Ausbildung</h5>
             <p>Ausbildung zum med. Bademeister und Masseur an der medizinischen Fachschule in Hoyerswerda und ist seit 1998 in unserer Praxis tätig. Von 1999 bis 2002 Weiterqualifizierung zur Physiotherapeutin an der med. Fachschule Großröhrsdorf.</p></div>
            <div class="bgbottom"></div>
             </div>
         </div>
        <div class="AccordionPanel">
           <div id="marusch" class="AccordionPanelTab">
              <div id="name"><h4>Birgit Marusch</h4>
             <p>Physiotherapeutin</p></div>
             <div id="em"><em>weitere Details klicken</em></div>
             </div>
           <div class="AccordionPanelContent">
           <div class="bgtop"></div>
           <div class="bgcontent">
           <img src="bilder/bild-detail-marusch.gif" alt="Birgit Marusch" title="Birgit Marusch" width="170" height="149" style="border: 0px; float: right;" />
            <h5>Spezialgebiete</h5>
             <ul class="spezialgebiete">
                <li>Manuelle Therapie</li>
                <li>Fußreflexzonentherapie</li>
                <li>Manipulativmassage</li>
                <li>Migränetherapie</li>
             </ul>
             <br />
             <h5>Ausbildung</h5>
             <p>Von 1994-1997 Umschulung zur Physiotherapeutin an der medizinischen Fachschule des Carl-Thiem-Klinikum. Arbeitete danach als Physiotherapeutin in Weisswasser und ist seit dem 01.01.2002 in unserer Praxis tätig.</p></div>
            <div class="bgbottom"></div>
             </div>
         </div>
        <div class="AccordionPanel">
           <div id="zech" class="AccordionPanelTab">
              <div id="name"><h4>Cornelia Zech</h4>
             <p>Physiotherapeutin</p></div>
              <div id="em"><em>weitere Details klicken</em></div>
             </div>
           <div class="AccordionPanelContent">
           <div class="bgtop"></div>
           <div class="bgcontent">
           <img src="bilder/bild-detail-zech.gif" alt="Cornelia Krause" title="Cornelia Krause" width="170" height="149" style="border: 0px; float: right;" />
            <h5>Spezialgebiete</h5>
             <ul class="spezialgebiete">
                <li>Manuelle Therapie</li>
                <li>Manuelle Lymphdrainagetherapie</li>
                <li>Orthopädische Kinderrückenschule</li>
                <li>Dorn-Methode</li>
                <li>Nordic Walking</li>
                <li>Marnitztherapie</li>
                <li>Orthopädische präventive Rückenschule</li>
             </ul>
             <br />
             <h5>Ausbildung</h5>
             <p>Von 2002-2005 Umschulung zur Physiotherapeutin an der medizinischen Fachschule des Carl-Thiem-Klinikum. Arbeitete danach als Physiotherapeutin in Cottbus und ist seit dem 01.05.2006 in unserer Praxis tätig.</p></div>
            <div class="bgbottom"></div>
             </div>
         </div>
    
     </div>
    </div>
    <div id="mitt"><p>Unsere Praxis eröffnete am 1. März 1991 in den Räumen der ehemaligen Poliklinik mit zwei Angestellten.</p>
     <p>Aufgrund der positiven Resonanz unserer Patienten erweiterte sich im Laufe der Jahre unser Praxisteam auf neun Mitarbeiter.</p>
     <p>Durch erstklassige Ausbildung und permanente Weiterbildung stehen Ihnen somit in unserer Praxis hochqualifizierte Therapeuten und Mitarbeiter zur Verfügung.</p></div>
    
     <script type="text/javascript">
    <!--
    var Accordion1 = new Spry.Widget.Accordion("Accordion1", { useFixedPanelHeights: false, defaultPanel: -1 });
    //-->
    </script>
    </section>
    <footer>
    </footer>
    </div>
    
    </body>
    </html>
    Geändert von rolli20up (06.10.2011 um 10:34 Uhr)

  2. #2
    TP-Newbie rolli20up macht alles soweit korrekt
    Registriert seit
    Oct 2011
    Beiträge
    2
    wegen mehr als 25000 Zeichen

    hier spry.js:

    Code:
    // SpryAccordion.js - version 0.17 - Spry Pre-Release 1.6.1
    //
    // Copyright (c) 2006. Adobe Systems Incorporated.
    // All rights reserved.
    //
    // Redistribution and use in source and binary forms, with or without
    // modification, are permitted provided that the following conditions are met:
    //
    //   * Redistributions of source code must retain the above copyright notice,
    //     this list of conditions and the following disclaimer.
    //   * Redistributions in binary form must reproduce the above copyright notice,
    //     this list of conditions and the following disclaimer in the documentation
    //     and/or other materials provided with the distribution.
    //   * Neither the name of Adobe Systems Incorporated nor the names of its
    //     contributors may be used to endorse or promote products derived from this
    //     software without specific prior written permission.
    //
    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    // POSSIBILITY OF SUCH DAMAGE.
    
    (function() { // BeginSpryComponent
    
    if (typeof Spry == "undefined") window.Spry = {}; if (!Spry.Widget) Spry.Widget = {};
    
    Spry.Widget.Accordion = function(element, opts)
    {
    	this.element = this.getElement(element);
    	this.defaultPanel = 0;
    	this.hoverClass = "AccordionPanelTabHover";
    	this.openClass = "AccordionPanelOpen";
    	this.closedClass = "AccordionPanelClosed";
    	this.focusedClass = "AccordionFocused";
    	this.enableAnimation = true;
    	this.enableKeyboardNavigation = true;
    	this.currentPanel = null;
    	this.animator = null;
    	this.hasFocus = null;
    
    	this.previousPanelKeyCode = Spry.Widget.Accordion.KEY_UP;
    	this.nextPanelKeyCode = Spry.Widget.Accordion.KEY_DOWN;
    
    	this.useFixedPanelHeights = true;
    	this.fixedPanelHeight = 0;
    
    	Spry.Widget.Accordion.setOptions(this, opts, true);
    
    	if (this.element)
    		this.attachBehaviors();
    };
    
    Spry.Widget.Accordion.prototype.getElement = function(ele)
    {
    	if (ele && typeof ele == "string")
    		return document.getElementById(ele);
    	return ele;
    };
    
    Spry.Widget.Accordion.prototype.addClassName = function(ele, className)
    {
    	if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) != -1))
    		return;
    	ele.className += (ele.className ? " " : "") + className;
    };
    
    Spry.Widget.Accordion.prototype.removeClassName = function(ele, className)
    {
    	if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) == -1))
    		return;
    	ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
    };
    
    Spry.Widget.Accordion.setOptions = function(obj, optionsObj, ignoreUndefinedProps)
    {
    	if (!optionsObj)
    		return;
    	for (var optionName in optionsObj)
    	{
    		if (ignoreUndefinedProps && optionsObj[optionName] == undefined)
    			continue;
    		obj[optionName] = optionsObj[optionName];
    	}
    };
    
    Spry.Widget.Accordion.prototype.onPanelTabMouseOver = function(e, panel)
    {
    	if (panel)
    		this.addClassName(this.getPanelTab(panel), this.hoverClass);
    	return false;
    };
    
    Spry.Widget.Accordion.prototype.onPanelTabMouseOut = function(e, panel)
    {
    	if (panel)
    		this.removeClassName(this.getPanelTab(panel), this.hoverClass);
    	return false;
    };
    
    Spry.Widget.Accordion.prototype.openPanel = function(elementOrIndex)
    {
    	var panelA = this.currentPanel;
    	var panelB;
    
    	if (typeof elementOrIndex == "number")
    		panelB = this.getPanels()[elementOrIndex];
    	else
    		panelB = this.getElement(elementOrIndex);
    
    	if (!panelB || panelA == panelB)
    		return null;
    
    	var contentA = panelA ? this.getPanelContent(panelA) : null;
    	var contentB = this.getPanelContent(panelB);
    
    	if (!contentB)
    		return null;
    
    	if (this.useFixedPanelHeights && !this.fixedPanelHeight)
    		this.fixedPanelHeight = (contentA.offsetHeight) ? contentA.offsetHeight : contentA.scrollHeight;
    
    	if (this.enableAnimation)
    	{
    		if (this.animator)
    			this.animator.stop();
    		this.animator = new Spry.Widget.Accordion.PanelAnimator(this, panelB, { duration: this.duration, fps: this.fps, transition: this.transition });
    		this.animator.start();
    	}
    	else
    	{
    		if(contentA)
    		{
    			contentA.style.display = "none";
    			contentA.style.height = "0px";
    		}
    		contentB.style.display = "block";
    		contentB.style.height = this.useFixedPanelHeights ? this.fixedPanelHeight + "px" : "auto";
    	}
    
    	if(panelA)
    	{
    		this.removeClassName(panelA, this.openClass);
    		this.addClassName(panelA, this.closedClass);
    	}
    
    	this.removeClassName(panelB, this.closedClass);
    	this.addClassName(panelB, this.openClass);
    
    	this.currentPanel = panelB;
    
    	return panelB;
    };
    
    Spry.Widget.Accordion.prototype.closePanel = function()
    {
    	// The accordion can only ever have one panel open at any
    	// give time, so this method only closes the current panel.
    	// If the accordion is in fixed panel heights mode, this
    	// method does nothing.
    
    	if (!this.useFixedPanelHeights && this.currentPanel)
    	{
    		var panel = this.currentPanel;
    		var content = this.getPanelContent(panel);
    		if (content)
    		{
    			if (this.enableAnimation)
    			{
    				if (this.animator)
    					this.animator.stop();
    				this.animator = new Spry.Widget.Accordion.PanelAnimator(this, null, { duration: this.duration, fps: this.fps, transition: this.transition });
    				this.animator.start();
    			}
    			else
    			{
    				content.style.display = "none";
    				content.style.height = "0px";
    			}
    		}
    		this.removeClassName(panel, this.openClass);
    		this.addClassName(panel, this.closedClass);
    		this.currentPanel = null;
    	}
    };
    
    Spry.Widget.Accordion.prototype.openNextPanel = function()
    {
    	return this.openPanel(this.getCurrentPanelIndex() + 1);
    };
    
    Spry.Widget.Accordion.prototype.openPreviousPanel = function()
    {
    	return this.openPanel(this.getCurrentPanelIndex() - 1);
    };
    
    Spry.Widget.Accordion.prototype.openFirstPanel = function()
    {
    	return this.openPanel(0);
    };
    
    Spry.Widget.Accordion.prototype.openLastPanel = function()
    {
    	var panels = this.getPanels();
    	return this.openPanel(panels[panels.length - 1]);
    };
    
    Spry.Widget.Accordion.prototype.onPanelTabClick = function(e, panel)
    {
    	if (panel != this.currentPanel)
    		this.openPanel(panel);
    	else
    		this.closePanel();
    
    	if (this.enableKeyboardNavigation)
    		this.focus();
    
    	if (e.preventDefault) e.preventDefault();
    	else e.returnValue = false;
    	if (e.stopPropagation) e.stopPropagation();
    	else e.cancelBubble = true;
    
    	return false;
    };
    
    Spry.Widget.Accordion.prototype.onFocus = function(e)
    {
    	this.hasFocus = true;
    	this.addClassName(this.element, this.focusedClass);
    	return false;
    };
    
    Spry.Widget.Accordion.prototype.onBlur = function(e)
    {
    	this.hasFocus = false;
    	this.removeClassName(this.element, this.focusedClass);
    	return false;
    };
    
    Spry.Widget.Accordion.KEY_UP = 38;
    Spry.Widget.Accordion.KEY_DOWN = 40;
    
    Spry.Widget.Accordion.prototype.onKeyDown = function(e)
    {
    	var key = e.keyCode;
    	if (!this.hasFocus || (key != this.previousPanelKeyCode && key != this.nextPanelKeyCode))
    		return true;
    
    	var panels = this.getPanels();
    	if (!panels || panels.length < 1)
    		return false;
    	var currentPanel = this.currentPanel ? this.currentPanel : panels[0];
    	var nextPanel = (key == this.nextPanelKeyCode) ? currentPanel.nextSibling : currentPanel.previousSibling;
    
    	while (nextPanel)
    	{
    		if (nextPanel.nodeType == 1 /* Node.ELEMENT_NODE */)
    			break;
    		nextPanel = (key == this.nextPanelKeyCode) ? nextPanel.nextSibling : nextPanel.previousSibling;
    	}
    
    	if (nextPanel && currentPanel != nextPanel)
    		this.openPanel(nextPanel);
    
    	if (e.preventDefault) e.preventDefault();
    	else e.returnValue = false;
    	if (e.stopPropagation) e.stopPropagation();
    	else e.cancelBubble = true;
    
    	return false;
    };
    
    Spry.Widget.Accordion.prototype.attachPanelHandlers = function(panel)
    {
    	if (!panel)
    		return;
    
    	var tab = this.getPanelTab(panel);
    
    	if (tab)
    	{
    		var self = this;
    		Spry.Widget.Accordion.addEventListener(tab, "click", function(e) { return self.onPanelTabClick(e, panel); }, false);
    		Spry.Widget.Accordion.addEventListener(tab, "mouseover", function(e) { return self.onPanelTabMouseOver(e, panel); }, false);
    		Spry.Widget.Accordion.addEventListener(tab, "mouseout", function(e) { return self.onPanelTabMouseOut(e, panel); }, false);
    	}
    };
    
    Spry.Widget.Accordion.addEventListener = function(element, eventType, handler, capture)
    {
    	try
    	{
    		if (element.addEventListener)
    			element.addEventListener(eventType, handler, capture);
    		else if (element.attachEvent)
    			element.attachEvent("on" + eventType, handler);
    	}
    	catch (e) {}
    };
    
    Spry.Widget.Accordion.prototype.initPanel = function(panel, isDefault)
    {
    	var content = this.getPanelContent(panel);
    	if (isDefault)
    	{
    		this.currentPanel = panel;
    		this.removeClassName(panel, this.closedClass);
    		this.addClassName(panel, this.openClass);
    
    		// Attempt to set up the height of the default panel. We don't want to
    		// do any dynamic panel height calculations here because our accordion
    		// or one of its parent containers may be display:none.
    
    		if (content)
    		{
    			if (this.useFixedPanelHeights)
    			{
    				// We are in fixed panel height mode and the user passed in
    				// a panel height for us to use.
    
    				if (this.fixedPanelHeight)
    					content.style.height = this.fixedPanelHeight + "px";
    			}
    			else
    			{
    				// We are in variable panel height mode, but since we can't
    				// calculate the panel height here, we just set the height to
    				// auto so that it expands to show all of its content.
    
    				content.style.height = "auto";
    			}
    		}
    	}
    	else
    	{
    		this.removeClassName(panel, this.openClass);
    		this.addClassName(panel, this.closedClass);
    
    		if (content)
    		{
    			content.style.height = "0px";
    			content.style.display = "none";
    		}
    	}
    
    	this.attachPanelHandlers(panel);
    };
    
    Spry.Widget.Accordion.prototype.attachBehaviors = function()
    {
    	var panels = this.getPanels();
    	for (var i = 0; i < panels.length; i++)
    		this.initPanel(panels[i], i == this.defaultPanel);
    
    	// Advanced keyboard navigation requires the tabindex attribute
    	// on the top-level element.
    
    	this.enableKeyboardNavigation = (this.enableKeyboardNavigation && this.element.attributes.getNamedItem("tabindex"));
    	if (this.enableKeyboardNavigation)
    	{
    		var self = this;
    		Spry.Widget.Accordion.addEventListener(this.element, "focus", function(e) { return self.onFocus(e); }, false);
    		Spry.Widget.Accordion.addEventListener(this.element, "blur", function(e) { return self.onBlur(e); }, false);
    		Spry.Widget.Accordion.addEventListener(this.element, "keydown", function(e) { return self.onKeyDown(e); }, false);
    	}
    };
    
    Spry.Widget.Accordion.prototype.getPanels = function()
    {
    	return this.getElementChildren(this.element);
    };
    
    Spry.Widget.Accordion.prototype.getCurrentPanel = function()
    {
    	return this.currentPanel;
    };
    
    Spry.Widget.Accordion.prototype.getPanelIndex = function(panel)
    {
    	var panels = this.getPanels();
    	for( var i = 0 ; i < panels.length; i++ )
    	{
    		if( panel == panels[i] )
    			return i;
    	}
    	return -1;
    };
    
    Spry.Widget.Accordion.prototype.getCurrentPanelIndex = function()
    {
    	return this.getPanelIndex(this.currentPanel);
    };
    
    Spry.Widget.Accordion.prototype.getPanelTab = function(panel)
    {
    	if (!panel)
    		return null;
    	return this.getElementChildren(panel)[0];
    };
    
    Spry.Widget.Accordion.prototype.getPanelContent = function(panel)
    {
    	if (!panel)
    		return null;
    	return this.getElementChildren(panel)[1];
    };
    
    Spry.Widget.Accordion.prototype.getElementChildren = function(element)
    {
    	var children = [];
    	var child = element.firstChild;
    	while (child)
    	{
    		if (child.nodeType == 1 /* Node.ELEMENT_NODE */)
    			children.push(child);
    		child = child.nextSibling;
    	}
    	return children;
    };
    
    Spry.Widget.Accordion.prototype.focus = function()
    {
    	if (this.element && this.element.focus)
    		this.element.focus();
    };
    
    Spry.Widget.Accordion.prototype.blur = function()
    {
    	if (this.element && this.element.blur)
    		this.element.blur();
    };
    
    /////////////////////////////////////////////////////
    
    Spry.Widget.Accordion.PanelAnimator = function(accordion, panel, opts)
    {
    	this.timer = null;
    	this.interval = 0;
    
    	this.fps = 60;
    	this.duration = 500;
    	this.startTime = 0;
    
    	this.transition = Spry.Widget.Accordion.PanelAnimator.defaultTransition;
    
    	this.onComplete = null;
    
    	this.panel = panel;
    	this.panelToOpen = accordion.getElement(panel);
    	this.panelData = [];
    	this.useFixedPanelHeights = accordion.useFixedPanelHeights;
    
    	Spry.Widget.Accordion.setOptions(this, opts, true);
    
    	this.interval = Math.floor(1000 / this.fps);
    
    	// Set up the array of panels we want to animate.
    
    	var panels = accordion.getPanels();
    	for (var i = 0; i < panels.length; i++)
    	{
    		var p = panels[i];
    		var c = accordion.getPanelContent(p);
    		if (c)
    		{
    			var h = c.offsetHeight;
    			if (h == undefined)
    				h = 0;
    
    			if (p == panel && h == 0)
    				c.style.display = "block";
    
    			if (p == panel || h > 0)
    			{
    				var obj = new Object;
    				obj.panel = p;
    				obj.content = c;
    				obj.fromHeight = h;
    				obj.toHeight = (p == panel) ? (accordion.useFixedPanelHeights ? accordion.fixedPanelHeight : c.scrollHeight) : 0;
    				obj.distance = obj.toHeight - obj.fromHeight;
    				obj.overflow = c.style.overflow;
    				this.panelData.push(obj);
    
    				c.style.overflow = "hidden";
    				c.style.height = h + "px";
    			}
    		}
    	}
    };
    
    Spry.Widget.Accordion.PanelAnimator.defaultTransition = function(time, begin, finish, duration) { time /= duration; return begin + ((2 - time) * time * finish); };
    
    Spry.Widget.Accordion.PanelAnimator.prototype.start = function()
    {
    	var self = this;
    	this.startTime = (new Date).getTime();
    	this.timer = setTimeout(function() { self.stepAnimation(); }, this.interval);
    };
    
    Spry.Widget.Accordion.PanelAnimator.prototype.stop = function()
    {
    	if (this.timer)
    	{
    		clearTimeout(this.timer);
    
    		// If we're killing the timer, restore the overflow
    		// properties on the panels we were animating!
    
    		for (i = 0; i < this.panelData.length; i++)
    		{
    			obj = this.panelData[i];
    			obj.content.style.overflow = obj.overflow;
    		}
    	}
    
    	this.timer = null;
    };
    
    Spry.Widget.Accordion.PanelAnimator.prototype.stepAnimation = function()
    {
    	var curTime = (new Date).getTime();
    	var elapsedTime = curTime - this.startTime;
    
    	var i, obj;
    
    	if (elapsedTime >= this.duration)
    	{
    		for (i = 0; i < this.panelData.length; i++)
    		{
    			obj = this.panelData[i];
    			if (obj.panel != this.panel)
    			{
    				obj.content.style.display = "none";
    				obj.content.style.height = "0px";
    			}
    			obj.content.style.overflow = obj.overflow;
    			obj.content.style.height = (this.useFixedPanelHeights || obj.toHeight == 0) ? obj.toHeight + "px" : "auto";
    		}
    		if (this.onComplete)
    			this.onComplete();
    		return;
    	}
    
    	for (i = 0; i < this.panelData.length; i++)
    	{
    		obj = this.panelData[i];
    		var ht = this.transition(elapsedTime, obj.fromHeight, obj.distance, this.duration);
    		obj.content.style.height = ((ht < 0) ? 0 : ht) + "px";
    	}
    
    	var self = this;
    	this.timer = setTimeout(function() { self.stepAnimation(); }, this.interval);
    };
    
    })(); // EndSpryComponent

  3. #3
    TP-Newbie Kire macht alles soweit korrekt
    Registriert seit
    Oct 2011
    Beiträge
    2
    Da kannst Du Dich beim IE direkt bedanken. Das liegt unter anderem daran, dass IE nicht wirklich JS sondern eine Clonesprache nutzt, die eigentlich das Selbe ist, liegt an Lizenzgründen. Und bei diesem "eigentlich" liegt auch der Hund begraben. Da gibt es interne Probleme, da kann man nur wenig ausrichten.

+ Antworten

Ähnliche Themen

  1. Spry-Akkordeon Probleme
    Von Olia im Forum Dreamweaver & andere Webeditoren
    Antworten: 2
    Letzter Beitrag: 04.09.2009, 08:23
  2. Spry Akkordeon über Links Steuern
    Von K2D im Forum Dreamweaver & andere Webeditoren
    Antworten: 1
    Letzter Beitrag: 17.12.2007, 22:40
  3. Spry Akkordeon
    Von Berke im Forum Dreamweaver & andere Webeditoren
    Antworten: 7
    Letzter Beitrag: 13.09.2007, 20:08
  4. Linie von einem zu anderen Punkt animiert
    Von Onion im Forum Flash & Multimedia
    Antworten: 5
    Letzter Beitrag: 20.10.2004, 10:27

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51