konsument: der ff machts - der IE nicht.

hallo Leute,

habe folgendes Problem,

ich bin gerade dabei eine Site auf cms umzustellen. Dabei habe ich kaum veränderungen gemacht, außer ein paar Kleinigkeiten aufgeräumt. Nun ja, auf jeden FAl habe ich eine stinknormale window.open Funktion, die mir der FF öffnet, aber der IE6 nicht (unterstützt Eigenschaft oder Methode nicht..bla) - was merkwürdig ist, denn auf der noch reinen html-seite macht ers ja auch.

http://netzwerk-mobile-massage.de/cms/index.php?page=mitarbeiter-dresden

wenn man hier auf die Bilder klickt, sollte sich das Fenster öffnen.

so wie hier bei der alten Version:

http://netzwerk-mobile-massage.de/mitarbeiter/ma_dresden.html

außerdem hab ich n array definiert, wobei der FF mir nen Fehler anzeigt (x[11] has no properties)

var x = new Array();
for(i=0;i<11;i++) x[i] = new Image();
 x[0].src = "images/menu/kontakt_on.jpg";
 x[1].src = "images/menu/impressum_on.jpg";
 x[2].src = "images/menu/links_on.jpg";
 x[3].src = "images/menu/home_on.jpg";
 x[4].src = "images/menu/arbeitsplatz_on.jpg";
 x[5].src = "images/menu/events_on.jpg";
 x[6].src = "images/menu/privat_on.jpg";
 x[7].src = "images/menu/hotel_on.jpg";
 x[8].src = "images/menu/kurse_on.jpg";
 x[9].src = "images/menu/terminplaner_on.jpg";
 x[10].src = "images/menu/mitarbeiter_on.jpg";
 x[11].src = "images/menu/anwendungen_on.jpg";

..ich raffs einfach nich - bin leider kein js-experte - wär echt super nett wenn mir einer helfen könnte.

viele Grüße

  1. Lieber konsument,

    eine stinknormale window.open Funktion, die mir der FF öffnet, aber der IE6 nicht (unterstützt Eigenschaft oder Methode nicht..bla)
    http://netzwerk-mobile-massage.de/cms/index.php?page=mitarbeiter-dresden

    Du operierst mit globalen Variablen in Deiner Funktion. Das ist böse! Diese Variablen müssen nicht global sein, daher ist es ein unnötiges Kompatibilitätsrisiko, diese global zu lassen. Setze ihnen ein "var" davor!

    Im Übrigen solltest Du den Fehlermeldungen des IE etwas mehr Aufmerksamkeit schenken, auch wenn diese sauschlecht sind. Immerhin nennt er einen Fehler in Zeile 67. Der Code dort sieht folgendermaßen aus:

    function openInfo(url, breite, hoehe) {  
        links = (screen.width/2)-(breite/2); // Deine Zeile mit dem Fehler!  
        oben = (screen.height/2)-(hoehe/2);  // Diese Zeile ist auch fehlerträchtig!  
        window.open(url, "popup","height="+hoehe+",width="+breite+",status = no,toolbar = no,menubar = no,location = no,resizable = no,titlebar = no,scrollbars = no,fullscreen = no,top ="+oben+",left ="+links+"");  
    }
    

    Was genau ist screen.width? Meinst Du screen.availWidth?

    wenn man hier auf die Bilder klickt, sollte sich das Fenster öffnen.

    Nimm doch etwas benutzerfreundlicheres. Du kannst neben meiner Lösung auch die Lightbox (oder Lightbox2) benutzen...

    wobei der FF mir nen Fehler anzeigt (x[11] has no properties)
    [...]
    for(i=0;i<11;i++) x[i] = new Image();

    Siehst Du's selber?

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hallo Felix,

      erstmal vielen Dank für diese ausführliche Hilfe. Vorweg möchte ich sagen, dass ich nur ganz ganz minimale Ahnung (wenn man hier schon von Ahnung sprechen kann) von js hab.

      function openInfo(url, breite, hoehe) {

      links = (screen.width/2)-(breite/2); // Deine Zeile mit dem Fehler!
          oben = (screen.height/2)-(hoehe/2);  // Diese Zeile ist auch fehlerträchtig!
          window.open(url, "popup","height="+hoehe+",width="+breite+",status = no,toolbar = no,menubar = no,location = no,resizable = no,titlebar = no,scrollbars = no,fullscreen = no,top ="+oben+",left ="+links+"");
      }

      
      >   
      > Was genau ist screen.width? Meinst Du screen.availWidth?  
        
      das Script habe ich mir damals ausn Netz besorgt. Da habe ich was gesucht, womit ich mein Popup horizontal und vertikal zentrieren kann. Hat ja auch soweit funktioniert.  
        
      
      > > for(i=0;i<11;i++) x[i] = new Image();  
      >   
      > Siehst Du's selber?  
        
      jo, jetzt hab ichs auch gesehen :)  
        
      jetzt zeigt mir der IE wieder ein neues Problem - und zwar  
        
      function getDetail(a) {  
       x = (document.all) ? window.event.x + document.body.scrollLeft : a.pageX; --> hier sagt er, "Objekt erforderlich" - muss ich da auch ein "var" vor "x" setzen?  
       y = (document.all) ? window.event.y + document.body.scrollTop  : a.pageY;  
       if (detail != null) {  
        detail.style.left = (x - 215) + "px";  
        detail.style.top  = (y - 30) + "px";  
       }  
      }  
        
      wär schön, wenn du nochmal helfen könntest.  
        
      Viele Grüße
      
      1. jetzt zeigt mir der IE wieder ein neues Problem - und zwar

        function getDetail(a) {
        x = (document.all) ? window.event.x + document.body.scrollLeft : a.pageX; --> hier sagt er, "Objekt erforderlich" - muss ich da auch ein "var" vor "x" setzen?
        y = (document.all) ? window.event.y + document.body.scrollTop  : a.pageY;
        if (detail != null) {
          detail.style.left = (x - 215) + "px";
          detail.style.top  = (y - 30) + "px";
        }
        }

        wär schön, wenn du nochmal helfen könntest.

        Viele Grüße

        Hi,

        hab mal grad die Seite aufgerufen und nur eins festgestellt . Der IE6 bringt die Meldung Objekt erforderlich! D.h. Du sprichst da was an was nicht da is ^^, lade ich die Seite nochmal neu hab ich die Meldung nicht mehr! Daraus schließe ich jetzt mal das du das Problem hast womit ich auch schon das öffteren zu kämpfen hatte (Dein JScript läuft schneller durch als es dem Browser lieb is ^^). Stell den Aufruf der Funktion welche Du im Verdacht hast mal ans Ende das sollt schon reichen. wie gesagt nur ne Vermutung! Sonst kannst Du auch den Error mit onerror = function(){return false;} abfangen denn die Site funktioniert soweit wie ich das sehen konnte trotzdem. Ist allerdings schmutziges coden ^^

        btw
        hyrocles

        1. Lieber hyrocles,

          (Dein JScript läuft schneller durch als es dem Browser lieb is ^^).

          solche Probleme habe ich mittels window.setTimeout() umschifft. Manchmal braucht der IE aus mir unverständlichen Gründen einige Millisekunden, bis diverse Objekte endlich verfügbar sind.

          window.setTimeout(  
              function () {  
                  // Code, der nach der Zwangspause ausgeführt werden soll  
              },  
              300 // Dauer der Zwangspause in Millisekunden  
          );
          

          Liebe Grüße aus Ellwangen,

          Felix Riesterer.

          --
          ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)