hensmatt: internet explorer erkennt "if" Anweisung nicht

Hallo,

ich hatte vor in ein vorhandenes script eine "if" Abfrage einzubauen, die sich auf die Browserweite bezieht.

Das hat auch in Firefox und Opera geklappt nur der IE spielt nicht mit.
Der IE nimmt bei den bildern immer die breite von "863px" bzw. "385px".

Hier der Code:

  
////////////////////////////////////////////////////////////////////////////////  
// GLOBAL VARS  
  
var imgs;  
var imgsGallery = new Array();  
  
////////////////////////////////////////////////////////////////////////////////  
// MOUSE EVENTS  
  
function setOnMouseClick() {  
	var elements = document.getElementsByTagName("a");  
	for (var i = 0; i < elements.length; i++) {  
		switch(elements[i].className) {  
			case "next":  
				elements[i].onclick = function() {  
					 imgs.move('next');  
					 return false;  
				}  
				break;  
			case "prev":  
				elements[i].onclick = function() {  
					 imgs.move('prev');  
					 return false;  
				}  
				break;  
		}  
	}  
}  
  
////////////////////////////////////////////////////////////////////////////////  
// INIT  
  
if (navigator.appName == "Microsoft Internet Explorer" || screen.width <= 1280) {function init() {  
	setOnMouseClick();  
	// images gallery  
	imgsGallery[0] = new Object();  
	imgsGallery[0].image = new Image(width="590");  
	imgsGallery[0].image.src = "images/hochzeit1/1.jpg";  
	imgsGallery[0].title = "Hochzeit I";  
	imgsGallery[0].caption = "1/3";  
	  
	imgsGallery[1] = new Object();  
	imgsGallery[1].image = new Image(width="263");  
	imgsGallery[1].image.src = "images/hochzeit1/2.jpg";  
	imgsGallery[1].title = "Hochzeit I";  
	imgsGallery[1].caption = "2/3";  
	  
	imgsGallery[2] = new Object();  
	imgsGallery[2].image = new Image(width="590");  
	imgsGallery[2].image.src = "images/hochzeit1/3.jpg";  
	imgsGallery[2].title = "Hochzeit I";  
	imgsGallery[2].caption = "3/3";  
  
	  
	// MudShiftContent(id, unitX, unitTotal)  
	imgs = new MudShiftContent('imgs', imgsGallery);  
	  
	// set init  
	if ($('imgs_title')) $('imgs_title').innerHTML = imgsGallery[0].title;  
	if ($('imgs_caption')) $('imgs_caption').innerHTML = imgsGallery[0].caption;  
}  
}  
if (screen.width > 1280) {function init() {  
	setOnMouseClick();  
	// images gallery  
	imgsGallery[0] = new Object();  
	imgsGallery[0].image = new Image(width="863");  
	imgsGallery[0].image.src = "images/hochzeit1/1.jpg";  
	imgsGallery[0].title = "Hochzeit I";  
	imgsGallery[0].caption = "1/3";  
	  
	imgsGallery[1] = new Object();  
	imgsGallery[1].image = new Image(width="385");  
	imgsGallery[1].image.src = "images/hochzeit1/2.jpg";  
	imgsGallery[1].title = "Hochzeit I";  
	imgsGallery[1].caption = "2/3";  
	  
	imgsGallery[2] = new Object();  
	imgsGallery[2].image = new Image(width="863");  
	imgsGallery[2].image.src = "images/hochzeit1/3.jpg";  
	imgsGallery[2].title = "Hochzeit I";  
	imgsGallery[2].caption = "3/3";  
	  
	  
	// MudShiftContent(id, unitX, unitTotal)  
	imgs = new MudShiftContent('imgs', imgsGallery);  
	  
	// set init  
	if ($('imgs_title')) $('imgs_title').innerHTML = imgsGallery[0].title;  
	if ($('imgs_caption')) $('imgs_caption').innerHTML = imgsGallery[0].caption;  
}  
}  
////////////////////////////////////////////////////////////////////////////////  
// EVENTS  
  
Event.observe(window, 'load', init, false);  

Ende des Codes

Da der IE die "width" nicht erkannt hat, habe ich noch "navigator.appName" hinzugefügt, das hat aber auch nichts gebracht.

Wäre toll wenn mir jemand weiterhelfen könnte. Danke schon mal!

  1. @@hensmatt:

    nuqneH

    ich hatte vor in ein vorhandenes script eine "if" Abfrage einzubauen, die sich auf die Browserweite bezieht.

    Diese fragst du aber nicht mit screen.width ab.

    habe ich noch "navigator.appName" hinzugefügt

    Das ist Unfug.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Diese fragst du aber nicht mit screen.width

      Aber in Opera und Firefox geht es doch mit screen.width.
      Wie bekomm ich denn den IE dazu das er das erste "IF" nimmt?

      Grüße Matthias

      1. Hi,

        Aber in Opera und Firefox geht es doch mit screen.width.

        nein, auch in Opera und Firefox hat dieser Wert nicht das geringste mit der Breite des Browserfensters zu tun.

        Wie bekomm ich denn den IE dazu das er das erste "IF" nimmt?

        Was hat Dein Debugging ergeben?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          Was hat Dein Debugging ergeben?

          Also ich arbeite mir Dreamweaver, da war mal nix in der Fehlerkonsole.

          Hier ist mal der link zur Seite um das Problem deutlicher zu machen:
          http://test.studio-thiel.de/

          Es soll halt auf 2 Bildschirmgrößen optimiert sein.

          1280px und <= 1280px

          Der Content passt sich mit css und dem Befehl @media screen and (min-width:1300){ } an. Zumindest in Firefox und Opera. Der IE kann das noch nicht. Aber die Seite ist ja in erster Linie für 1024px optimiert und deshalb ist das auch kein muss.

          imgsGallery[0].image = new Image(width="590");

          was ist deiner Ansicht nach der Sinn darin, dem Konstruktor des Image-Objekts einen String mit dem Wert "590" zu übergeben, den du gleichzeitig noch einer globalen Variablen namens width zuweist?

          Zu dumm, dass das immerhin syntaktisch möglich ist, deshalb gibt's auch keine Meldung in der Fehlerkonsole.

          Die Bilder auf der Seite sind für die > 1280px Version angeleg deshalb müssen sie bei der 1024px version runterskaliert werden. Darum der Befehl: new Image(width="590");

          Aber der IE erkennt die neue Bildweite von 590px nicht und scrollt dann immer die 863px.

          Das Ganze übersteigt grade leider meine Fähigkeiten :(

          Grüße Matthias

          1. Hi,

            Die Bilder auf der Seite sind für die > 1280px Version angeleg deshalb müssen sie bei der 1024px version runterskaliert werden. Darum der Befehl: new Image(width="590");

            Selbst wenn du uns das Warum erklärst, bleibt das Darum immer noch Unsinn.

            Das Ganze übersteigt grade leider meine Fähigkeiten :(

            Dann solltest du nicht versuchen, das dadurch zu kompensieren, dass du dir selbst irgendeine Phantasie-Syntax/-Befehle für JavaScript ausdenkst, sondern eher dadurch, dass du dich mit den Grundlagen beschäftigst.

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Hi,

    imgsGallery[0].image = new Image(width="590");

    was ist deiner Ansicht nach der Sinn darin, dem Konstruktor des Image-Objekts einen String mit dem Wert "590" zu übergeben, den du gleichzeitig noch einer globalen Variablen namens width zuweist?

    Zu dumm, dass das immerhin syntaktisch möglich ist, deshalb gibt's auch keine Meldung in der Fehlerkonsole.

    So long,
     Martin

    --
    Funktion und Referenz auf diese sind mir bekannt, mit Zeigern kann ich nicht viel mehr anfangen, als damit auf Buttons zu klicken.
      (Ashura)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  3. Hallo,

    if (navigator.appName == "Microsoft Internet Explorer" || screen.width <= 1280) {function init() {

    Schreib mal anstelle von "function init() {"

    init= function () {

    Gruss

    1. @@Nickname:

      nuqneH

      Schreib mal anstelle von "function init() {"
      init= function () {

      Um welches Problem zu lösen?

      Oder um ein neues zu schaffen? Eine derartige Funktionsdefinition muss vor dem ersten Aufruf stehen; bei 'function init() {}' ist die Positoin im Quelcode egal.

      Und wenn schon, dann nicht global, sondern lokal: 'var init = function () {}'.

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
      1. Hallo,

        nuqneH

        Dem OP helfen?

        Schreib mal anstelle von "function init() {"
        init= function () {

        Um welches Problem zu lösen?

        siehe oben.

        Und wenn schon, dann nicht global, sondern lokal: 'var init = function () {}'.

        Die vermeintlich nicht funktionierende "if" Anweisung  wird doch im globalen scope ausgeführt.

        Egal, so funzt es beim IE8, ausprobierenderweise.

        Qapla'

        dito & Gruss ;)