Autor |
Nachricht |
sahnemuh
Threadersteller
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Mi 10.01.2007 14:00
Titel Safari mag mein Javascript nicht |
|
|
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
|
|
|
|
|
Kraat
Dabei seit: 05.10.2006
Ort: Köln
Alter: 42
Geschlecht:
|
Verfasst Mi 10.01.2007 15:16
Titel Re: Safari mag mein Javascript nicht |
|
|
sahnemuh hat geschrieben: | k? k! |
Und sonst klappt's in Deutsch?
Meine Antwort war eher darauf bedacht Dir einen Hinweis darauf zu liefern, das dein JS im Safaribrowser ausgeschaltet sein könnte.
|
|
|
|
|
Anzeige
|
|
|
sahnemuh
Threadersteller
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Mi 10.01.2007 15:22
Titel
|
|
|
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
|
|
|
|
|
Kraat
Dabei seit: 05.10.2006
Ort: Köln
Alter: 42
Geschlecht:
|
Verfasst Mi 10.01.2007 15:29
Titel
|
|
|
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.
|
|
|
|
|
sahnemuh
Threadersteller
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Mi 10.01.2007 15:41
Titel
|
|
|
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
|
|
|
|
|
|
|
|
Ä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
|
|