| HTML, JavaScript, AJAX und CSS Probleme mit HTML? Netscape oder IE funktionieren nicht so, wie sie sollen? Stellt eure HTML-Fragen hier im Forum und diskutiert eure Probleme mit anderen Entwicklern. |
 |
|

24-11-2011, 16:23
|
|
Prominenter
Registrierter Benutzer
|
|
Registriert seit: Apr 2004
Beiträge: 136
|
|
<DIV> zentrieren abhängig von größe
Hi@all
Ich versuche einen Container nachträglich zu platzieren und Größenmäßig anzupassen.
Leider funktioniert es immer erst auf den zweiten Klick ???
Das Script:
PHP-Code:
function MM_showHideLayers()
{
//v6.0
var i,p,v,t,obj,sW=0,sH=0,oW=0,oH=0,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3)
if ((obj=MM_findObj(args[i]))!=null)
{
v=args[i+2];
t=args[i+1];
if (obj.style)
{
v=(v=='show')?'block':(v=='hide')?'none':v;
}
obj.style.display = v;
// Position berechnen
sW = document.body.offsetWidth;
sH = document.body.offsetHeight;
var bild=document.getElementById('picture');
pW = bild.offsetWidth;
pH = bild.offsetHeight;
oW = obj.offsetWidth;
oH = obj.offsetHeight;
// Wenn Bild größer wie Bildschirm Objekt auf Bildschrimgröße setzen
if( pH > sH )
{
oH = (sH*90/100);
obj.style.height = oH + "px";
obj.style.top = ((sH/2)-(oH/2)) + "px";
obj.style.overflow = "scroll";
}
else
{
// Layer anzeigen
obj.style.top = ((sH/2)-(oH/2)) + "px";
}
obj.style.left = ((sW/2)-(oW/2)) + "px";
obj.style.position = "fixed";
// Textausgabe
if(t)
{
document.getElementById('text').innerHTML = t;
document.getElementById('text').style.display = "block";
}
else
{
document.getElementById('text').innerHTML = "";
document.getElementById('text').style.display = "none";
}
obj.style.display = "none" ;
obj.style.display = v;
}
}
//-->
Aufruf mit:
PHP-Code:
MM_showHideLayers('layer','','show')
Der Layer:
PHP-Code:
<!-- Beginn Layer Bildanzeige -->
<div id="layer" style="position:absolute; top:0 left:0; z-index:1; border: 2px solid black;
background:#FFFFFF; padding:5px; display:none;">
<div style="position:absolute; right:5px; width:18px; border: 1px solid black;
background:#FFFFFF; font-weight:bold; text-align:center; vertical-align:middle; display:inline; ">
<a href="javascript:MM_showHideLayers('layer','','hide')"
onmouseover="top.status='LAYER SCHLIESSEN';return true;"
title="SCHLIESSEN"
style="text-decoration:none; color:#000;"><b>x</b></a></div>
<div id="text" style="color:#000000; font-weight:bold; display:none;"></div>
<img src="http://www.php-resource.de/forum/images/null_pix.gif" id="picture"
style="cursor:pointer; border:1px solid black;" title="Klick -> Close" alt=""
onclick="javascript:MM_showHideLayers('layer','','hide')" />
</div>
<!-- Ende Layer Bildanzeige -->
Hinweis: Der Inhalt (meistens ein Bild) für den Layer wird zuvor durch eine andere Funktion geladen.
Also, wie gesagt, das Script funktioniert soweit, aber leider erst wenn man den Lnk-Aufruf ein zweites mal anklickt,
beim ersten Klick wird zwar der Layer angezeigt, aber weder größe noch Position stimmen,
und wenn zuvor ein größer Inhalt geladen wurde bleibt der Layer groß bis man ein zweites mal auf den kleineren Inhalt klickt.
Hoffe auf Verständnis und bitte um Hilfe.
Thx@all
Geändert von Prominenter (24-11-2011 um 16:33 Uhr)
Grund: Umbruch eingefügt
|

24-11-2011, 16:27
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.481
|
|
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

24-11-2011, 19:53
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.305
|
|
Die Fehlerkonsole von Firebug sagt:
Zitat:
|
MM_findObj is not defined
|
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

24-11-2011, 21:42
|
|
Prominenter
Registrierter Benutzer
|
|
Registriert seit: Apr 2004
Beiträge: 136
|
|
Naja, die Funktion ist hier im Forum nicht implementiert,weil die ja funktioniert, die sucht übrigens nur den zu ändernden Layer und funktioniert problemlos.
Aber hier nochmal das ganze Script:
PHP-Code:
<!--
function MM_reloadPage(init)
{
//reloads the window if Nav4 resized
if (init==true) with (navigator)
{
if ((appName=="Netscape")&&(parseInt(appVersion)==4))
{
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage;
}
}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
function MM_findObj(n, d)
{
//v4.01
var p,i,x; if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length)
{
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
}
if(!(x=d[n])&&d.all) x=d.all[n];
for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n);
return x;
}
function MM_showHideLayers()
{
//v6.0
var i,p,v,t,obj,sW=0,sH=0,oW=0,oH=0,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3)
if ((obj=MM_findObj(args[i]))!=null)
{
v=args[i+2];
t=args[i+1];
if (obj.style)
{
v=(v=='show')?'block':(v=='hide')?'none':v;
}
obj.style.display = v;
// Position berechnen
sW = document.body.offsetWidth;
sH = document.body.offsetHeight;
var bild=document.getElementById('picture');
pW = bild.offsetWidth;
pH = bild.offsetHeight;
oW = obj.offsetWidth;
oH = obj.offsetHeight;
// Wenn Bild größer wie Bildschirm Objekt auf Bildschrimgröße setzen
if( pH > sH )
{
oH = (sH*90/100);
obj.style.height = oH + "px";
obj.style.top = ((sH/2)-(oH/2)) + "px";
obj.style.overflow = "scroll";
}
else
{
// Layer anzeigen
obj.style.top = ((sH/2)-(oH/2)) + "px";
}
obj.style.left = ((sW/2)-(oW/2)) + "px";
obj.style.position = "fixed";
// Textausgabe
if(t)
{
document.getElementById('layer_text').innerHTML = t;
document.getElementById('layer_text').style.display = "block";
}
else
{
document.getElementById('layer_text').innerHTML = "";
document.getElementById('layer_text').style.display = "none";
}
obj.style.display = "none" ;
obj.style.display = v;
}
}
//-->
|

26-11-2011, 14:55
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.305
|
|
Ich bekomme immer noch einen Script-Fehler. Stell mal das komplette Beispiel online.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

27-11-2011, 19:36
|
|
Prominenter
Registrierter Benutzer
|
|
Registriert seit: Apr 2004
Beiträge: 136
|
|
Hi@all
PRELOAD
Also immer dort wo Bilder geöffnet werden sollen (alle Bilder mit Cursor  ointer).
Thx@all
|

28-11-2011, 20:11
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.305
|
|
Ich habe mir das mal angesehen. Keine Ahung, was dieser Dreamweaver-Pseudo-Javascript-Code macht, aber mir ist aufgefallen, dass es im Quelltext kein Element mit der ID "picture" gibt. Möglicherweise wird das nach dem ersten Einblenden erzeugt? Ich vermute mal, dass es daher bei dem folgenden Code Probleme geben könnte:
PHP-Code:
var bild=document.getElementById('picture');
pW = bild.offsetWidth;
pH = bild.offsetHeight;
...
if( pH > sH )
An der Stelle könntest du ansetzen. Ist aber nur eine Vermutung.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

28-11-2011, 22:53
|
|
Prominenter
Registrierter Benutzer
|
|
Registriert seit: Apr 2004
Beiträge: 136
|
|
@kropff
ich habe inzwischen ein paar ID's umbenennen müssen.
Das besagte Picture findest du nun als ID='layer_picture' ganz unten im Quellcode (<!-- Beginn Layer Bildanzeige -->)
Natürlich habe ich auch das Script entsprechend angepasst und wie gesagt soweit alles gut, nur eben das man es quasi erst zweimal aufrufen muss,damit die Position und Skalierung übernommen wird.
Thx@all
|

29-11-2011, 11:29
|
|
eagle275
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 371
|
|
wenn das layer_picture-Teil erst "da unten" im Quellcode auftaucht, deine JS-Funktion aber schon im Head drauf zugreifen will , dann geht das nicht - beim 2ten Aufbau hat er dann wohl die ganze Seite geparst und er findet das Objekt im DOM-Baum ... ergo bau mal sowas wie DOMReady ein, damit er erst den kompletten DOM-Baum baut und DANN versucht zu manipulieren
__________________
Wer LESEN kann, ist klar im Vorteil!
|

29-11-2011, 14:20
|
|
Prominenter
Registrierter Benutzer
|
|
Registriert seit: Apr 2004
Beiträge: 136
|
|
@eagle275
Ich hab auch schon das Script an das Ende der Seite gepackt, also nach dem 'layer_picture', hat auch nichts gebracht.
Die Funtion im Script wird doch sowieso erst beim Aufruf über den Link geladen und ausgeführt, ist es da nicht egal wo das Script steht?
DOMReady ??? Hilfe
Thx@all
|

29-11-2011, 21:58
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.305
|
|
Sorry, aber durch diesen Pseudo-JavaScript-Müll vom Dreamweaver wühl ich mich nicht durch. Ein Tipp: lerne es vernünftig, dann helfe ich dir gerne weiter. Und wohl auch einige andere hier im Forum. Aber DW-Code ist ein no-go, da den auf Anhieb keiner blickt.
Gruß
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

30-11-2011, 15:56
|
|
Prominenter
Registrierter Benutzer
|
|
Registriert seit: Apr 2004
Beiträge: 136
|
|
Zitat:
Zitat von Kropff
...Pseudo-JavaScript-Müll vom Dreamweaver ...
|
Dreamweaver ??? - Nie benutzt !!!
|

30-11-2011, 17:23
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.305
|
|
Zitat:
Zitat von Prominenter
Dreamweaver ??? - Nie benutzt !!!
|
Dann hast du dir diesen Code irgendwo zusammengeklaubt und angepasst. Aber alles mit function MM_irgendwas ist gewöhnlich vom Dreamweaver. Das MM steht noch für die alte Firmenbezeichnung Macromedia.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

30-11-2011, 17:59
|
|
Prominenter
Registrierter Benutzer
|
|
Registriert seit: Apr 2004
Beiträge: 136
|
|
Ja durchaus möglich, das einige Sachen aus verschiedenen Scripten 'zusammengeklaubt' sind, aber das tut doch der Sache ansich nichts ab - oder ???
Thx@all
|

30-11-2011, 19:14
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.305
|
|
Zitat:
Zitat von Prominenter
aber das tut doch der Sache ansich nichts ab - oder ???
|
Um da den Fehler zu finden, müsste ich mich wahrscheinlich auch durch den Original-Dreamweavercode wühlen. Und der ist so dermaßen unleserlich, dass ich mir das nicht antue. Programmier das mal händisch nach. Einen großen Teil des notwendingen(!) Codes hast du ja schon.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|