Displayeigenschaften, Problem mit Mozilla?
KD-one
- css
Hallo,
ich verberge standardmässig das Menü mit [display:none;] und setze es per Javascript mit [body onload="schau('menu');"] auf sichtbar.
Die Funktion dazu:
function schau(id)
{
document.getElementById(id).style.display = 'block';
}
Das funktioniert auch in allen Browsern wunderbar, allerdings wird das Menü nur im Opera 7.2 und dem IE 6 richtig angezeigt.
Bei Mozilla1.2.1 Mozilla 1.5 und Firebird 0.7 wird die betreffende Zelle, in der das Menü per [position:relative;] positioniert wurde, weit gedehnt und ist daher fast doppelt so breit.
hab ich da einen Fehler eingebaut, oder was?
http://faq.united-web.at/_test/
http://faq.united-web.at/_test/scripte/faq.css
Ich habs auch schon mit display:inline probiert, allerdings ignoriert dann Opera die Positionierung und auch in den anderen Browsern brachte es keine Besserung, obwohl dort die Positionierung nicht negiert wurde (bis auf den zu großen Zellenbereich).
Wäre nett, wenn mir da jemand eine Lösung dafür posten könnte.
Danke gleich mal im Voraus und
Gruß
Kurt
Hallo,
ich verberge standardmässig das Menü mit [display:none;] und setze es per Javascript mit [body onload="schau('menu');"] auf sichtbar.
Und was ist, wenn jemand CSS eingeschaltet, aber JS abgeschaltet hat?
Eventuell waere
visibility:hidden
besser geeignet als
display:none
weil bei visibility:hidden der Platz, den das Element einnehmen wuerde, ausgespart wird.
Hast Du das schon probiert?
Gruesse,
Thomas
Hallo Thomas,
Und was ist, wenn jemand CSS eingeschaltet, aber JS abgeschaltet hat?
Genau das ist ja der Grund, warum ich mit display:none; arbeite. Bei deaktiviertem Js wird dann das Menü verborgen und eine aufgeklappte Liste mit den Links, die im Noscriptbereich eingefügt ist, angezeigt.
Das ist der ganze Grund für dieses Konstrukt.
Eventuell waere
visibility:hidden
besser geeignet als
display:none
weil bei visibility:hidden der Platz, den das Element einnehmen wuerde, ausgespart wird.
Hast Du das schon probiert?
Es soll auf keinen Fall der Platz für das Menü ausgespart werden, sondern die Liste oben beginnen.
Die Idee hatte ich Anfangs auch, aber ich habe sie aufgrund des reservierten Platzes sofort wieder verworfen.
Gruß
Kurt
Hallo Thomas,
Problem gelöst, Mozilla und Firebird verlangten im entsprechenden DIV eine Breitenzuweisung, während der IE und Opera dieses nur so breit machten, wie sein Inhalt ist.
Nun funktioniert es.
Trotzdem Danke für die Nachschau.
Gruß
Kurt
Hallo Gemeinde,
Ich hab folgendes Script auf meiner Seite:
<?php
if ((isset($_GET["content"])) && ($_GET["content"]=="sitemap"))
{
include "includes/sitemaptext.txt";
}
else {
include "includes/welcometext.txt";
} ?>
Der Aufruf sollte so erfolgen:
<a class="verweis" href="index.php?content=sitemap">SITEMAP</a>
Ich habe auch diese Variante probiert:
<a class="verweis" href="?content=sitemap">SITEMAP</a>
(index.php ist via .htaccess freigeschaltet)
Es wird immer auf den Else-Zweig verwiesen.
Da ich ein blutiger Laie in PHP bin, fällt mir nur folgendes dazu ein:
Syntaxprobleme aufgrund der PHP-Version?
Auf meinem Server ist PHP-Version 4.0.6 installiert.
http://faq.united-web.at/_test/info.php
Der Link zum Problemkind (bitte auf Sitemap klicken, da wird immer die Startseite geladen!):
http://faq.united-web.at/_test/
Könnte mich da vielleicht jemand ein wenig schlauer machen?
Danke im Voraus.
Gruß
Kurt
Hallo Kurt,
Auch wenn du den Fehler anscheinend schon behoben hast (da der Link auf die Sitemap funktioniert):
Da ich ein blutiger Laie in PHP bin, fällt mir nur folgendes dazu ein:
Syntaxprobleme aufgrund der PHP-Version?
Auf meinem Server ist PHP-Version 4.0.6 installiert.
ja, das ist das Problem - die Arrays $_GET,$_POST,$_SERVER usw. gibt es erst ab Version 4.1. Bei Versionen <4.1 musst du $HTTP_GET_VARS verwenden (siehe auch http://www.php.net/manual/en/language.variables.predefined.php) - oder besser auf eine neuere Version updaten (die Version 4.0.6 ist immerhin schon fast 2,5 Jahre alt!)
Grüße aus Nürnberg
Tobias
Hallo Tobias,
Hallo Kurt,
Auch wenn du den Fehler anscheinend schon behoben hast (da der Link auf die Sitemap funktioniert):
Danke, daß du dich meines Problems trotzdem angenommen hast. :-)
Ja, wennauch ich mir nicht sicher bin, daß es korrekt ist.
Ich habe nun die Abfrage so gestaltet:
<?php
if ((isset($content)) && ($content=="sitemap"))
{
include "includes/sitemaptext.txt";
}
else {
include "includes/welcometext.txt";
}
?>
Ist das so korrekt, oder sind auch hier ev. Probleme zu erwarten?
Ich habe ja auch stundenlang gesucht und alte Scripte durchforstet, um herauszubekommen, wie die Schreibweise früher war.
Da ich ein blutiger Laie in PHP bin, fällt mir nur folgendes dazu ein:
Syntaxprobleme aufgrund der PHP-Version?
Auf meinem Server ist PHP-Version 4.0.6 installiert.
ja, das ist das Problem - die Arrays $_GET,$_POST,$_SERVER usw. gibt es erst ab Version 4.1. Bei Versionen <4.1 musst du $HTTP_GET_VARS verwenden (siehe auch http://www.php.net/manual/en/language.variables.predefined.php)
Was ist der Unterschied zu meiner Version?
<?php
if ((isset($HTTP_GET_VARS["content"])) && ($HTTP__GET_VARS["content"]=="sitemap")) {
include "includes/sitemaptext.txt";
}
else {
include "includes/welcometext.txt";
}
?>
Sollte ich besser so schreiben, und warum?
- oder besser auf eine neuere Version updaten (die Version 4.0.6 ist immerhin schon fast 2,5 Jahre alt!)
Das müsstest du meinem Provider sagen, das kann ich nicht beeinflussen. :-)
Gruß
Kurt
Hallo Kurt,
if ((isset($content)) && ($content=="sitemap"))
diese Version funktioniert (theoretisch) heute auch nicht, allerdings nur wenn register_globals auf on steht (Standard = off) und auch nicht zu empfehlen, da du dir damit ein potentielles Sicherheitsloch einfängst.
if ((isset($HTTP_GET_VARS["content"])) && ($HTTP__GET_VARS["content"]=="sitemap")) {
ich weiß nicht, ob man bei php 4.0.6 schon register_globals abschalten konnte, aber wenn dem so war, dann ist diese Lösung besser, da du genau weißt, wo dein Wert herkommt. (btw: bei dem zweiten $HTTP_GET_VARS hast du nach "HTTP" einen Unterstrich zu viel)
Sollte ich besser so schreiben, und warum?
wie man das in dieser Version besser schreibt, kann ich dir auch nicht so genau sagen ...
- oder besser auf eine neuere Version updaten (die Version 4.0.6 ist immerhin schon fast 2,5 Jahre alt!)
Das müsstest du meinem Provider sagen, das kann ich nicht beeinflussen. :-)
Du solltest mal ein ernstens Wort mit deinem Provider reden, afaik sind seit der 4.0.6 einige Sicherheitslöcher geschlossen worden - ganz davon zu schweigen, dass du deine Scripte umschreiben darfst, wenn der Provider irgendwann auf eine 4.3.x-Version umsteigt - wenn er es jetzt macht, kannst du die Scripte gleich für eine aktuelle Version schreiben.
Grüße aus Nürnberg
Tobias
Hallo Thomas,
Dann werde ich das Script gleich mal ändern.
Ob ein Gespräch mit meinem Provider allerdings den erhofften Erfolg bringt, naja, ich warte mal ab....
Danke dir.
Gruß
Kurt