mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 21:32 Benutzername: Passwort: Auto-Login

Thema: Safari mag mein Javascript nicht vom 10.01.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Allgemeines - Nonprint -> Safari mag mein Javascript nicht
Autor Nachricht
sahnemuh
Threadersteller

Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht: Männlich
Verfasst Mi 10.01.2007 14:00
Titel

Safari mag mein Javascript nicht

Antworten mit Zitat Zum Seitenanfang

folgendes script funktioniert in allen browsern bis auf safari.
die debug konsole spuckt nichts an fehlern aus.. nur der layer wird nicht angezeigt (die erste funktion ist zur ermittlung der viewport größe, die 2. zum spawnen eines layers, der ein iframe beeinhaltet, sowie eines unsichtbaren layers, der den rest der seite überlagert um deren bedienung nicht mehr möglich zu machen, bis der layer geschlossen wurde..)

Code:


// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){
   
   var xScroll, yScroll;
   
   if (window.innerHeight && window.scrollMaxY) {   
      xScroll = document.body.scrollWidth;
      yScroll = window.innerHeight + window.scrollMaxY;
   } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
      xScroll = document.body.scrollWidth;
      yScroll = document.body.scrollHeight;
   } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
      xScroll = document.body.offsetWidth;
      yScroll = document.body.offsetHeight;
   }
   
   var windowWidth, windowHeight;
   if (self.innerHeight) {   // all except Explorer
      windowWidth = self.innerWidth;
      windowHeight = self.innerHeight;
   } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
      windowWidth = document.documentElement.clientWidth;
      windowHeight = document.documentElement.clientHeight;
   } else if (document.body) { // other Explorers
      windowWidth = document.body.clientWidth;
      windowHeight = document.body.clientHeight;
   }   
   
   // for small pages with total height less then height of the viewport
   if(yScroll < windowHeight){
      pageHeight = windowHeight;
   } else {
      pageHeight = yScroll;
   }

   // for small pages with total width less then width of the viewport
   if(xScroll < windowWidth){   
      pageWidth = windowWidth;
   } else {
      pageWidth = xScroll;
   }


   arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
   return arrayPageSize;
}





function spawnHideIt(id,id2,source) {
   
   //layer
   myID = document.getElementById(id);
   //iframe
   myID2 = document.getElementById(id2);
   
   if(myID) {
      
      // wenn layer ausgeblendet: einblenden, iframe source setzen und zentrieren
      if(myID.style.display == 'none') {
         
         // setzen der iframe src
         if(source && myID2) {
            myID2.src = source;
         }
         
         // layer mit content einblenden und zentrieren
         myID.style.display = 'block';
         myWidth = Math.round(-myID.offsetWidth/2);
         myHeight = Math.round(-myID.offsetHeight/2);
         myMargin = +myHeight+"px 0 0 "+myWidth+"px";
         myID.style.margin = myMargin;
         myID.style.zIndex = '99';
         
   
         // layer erzeugen, der die bedienung der seite abschaltet (unsichtbar)      
         var bdy = document.getElementsByTagName("body").item(0);
         arrayPageSize = getPageSize();
         
         overlay = document.createElement("div");
         overlay.setAttribute('id','overlay');
         
         overlay.style.height = arrayPageSize[1] + "px";
         overlay.style.width = (arrayPageSize[0]-20) + "px";
         overlay.style.display = 'block';
         
         bdy.appendChild(overlay);
         
   
      }
      
      // wenn layer eingeblendet: ausblenden            
      else {
      
         myID.style.display = 'none';   
   
         var bdy = document.getElementsByTagName("body").item(0);
         myOverlay = document.getElementById("overlay");
         bdy.removeChild(myOverlay);
         
         
      }
   }
   
   else {
      void(0);
   }
      
}


.. irgendeiner der macianer ne idee, was der nicht mag?


Zuletzt bearbeitet von sahnemuh am Mi 10.01.2007 14:02, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Kraat

Dabei seit: 05.10.2006
Ort: Köln
Alter: 42
Geschlecht: Männlich
Verfasst Mi 10.01.2007 15:16
Titel

Re: Safari mag mein Javascript nicht

Antworten mit Zitat Zum Seitenanfang

sahnemuh hat geschrieben:
k? k!

Und sonst klappt's in Deutsch? *zwinker*
Meine Antwort war eher darauf bedacht Dir einen Hinweis darauf zu liefern, das dein JS im Safaribrowser ausgeschaltet sein könnte.
  View user's profile Private Nachricht senden
Anzeige
Anzeige
sahnemuh
Threadersteller

Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht: Männlich
Verfasst Mi 10.01.2007 15:22
Titel

Antworten mit Zitat Zum Seitenanfang

okay. deine antwort war aber auch leicht mißverständlich formuliert.

was deine vermutung angeht: nein, javascript ist durchaus aktiviert.
es werden auch sowohl alle objekte erzeugt, als auch sämtliche zuweisungen gemacht.
nur das eigentliche anzeigen der elemente will er pars tout nicht.


Zuletzt bearbeitet von sahnemuh am Mi 10.01.2007 15:23, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Kraat

Dabei seit: 05.10.2006
Ort: Köln
Alter: 42
Geschlecht: Männlich
Verfasst Mi 10.01.2007 15:29
Titel

Antworten mit Zitat Zum Seitenanfang

Vllt. solltest du nach in einer Quelle nachschauen ob sich dein DOM auch mit Safari verträgt, andernfalls würde ich es geringfügig abändern. Leider habe ich jetzt keine Quelle parat in der man nachschlagen könnte.

Aber selfhtml könnte Dir vllt. helfen.
  View user's profile Private Nachricht senden
sahnemuh
Threadersteller

Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht: Männlich
Verfasst Mi 10.01.2007 15:41
Titel

Antworten mit Zitat Zum Seitenanfang

Kraat hat geschrieben:
Vllt. solltest du nach in einer Quelle nachschauen ob sich dein DOM auch mit Safari verträgt, andernfalls würde ich es geringfügig abändern. Leider habe ich jetzt keine Quelle parat in der man nachschlagen könnte.

Aber selfhtml könnte Dir vllt. helfen.


ja. safari interpretiert das dom nach w3c standars (sogar vollständiger und richtiger als die meisten andern browser - mehr dazu auch hier: http://www.webkrauts.de/2006/12/20/webentwicklung-auf-safari/ ) und meine funktion benutzt nichts, was auch nur ansatzweise probleme machen "sollte".
ich glaube kaum, dass mir die selfhtml javascript doku in diesem speziellen fall hilft. trotzdem danke für deinen hinweis.


Zuletzt bearbeitet von sahnemuh am Mi 10.01.2007 15:42, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
 
Ähnliche Themen [Javascript] Nur im safari tut es nicht?
[Mac] Safari und Javascript - nochmals
[SAFARI] Javascript debugging
Probleme mit JavaScript im Safari
[javascript] Safari Version 1 erkennen
Javascript: Abfrage, ob Safari am Werk ist
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Allgemeines - Nonprint


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.