internet explorer erkennt "if" Anweisung nicht
hensmatt
- javascript
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!
@@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'
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
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
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
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
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
Hallo,
if (navigator.appName == "Microsoft Internet Explorer" || screen.width <= 1280) {function init() {
Schreib mal anstelle von "function init() {"
init= function () {
Gruss
@@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'
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 ;)