2010-12-29 11 views
6

ist es eine gute Übung, iframe zu verwenden, um header/navbar zu implementieren?ist es eine gute Übung, iframe zu verwenden, um header/navbar zu implementieren?

Meine Website ist im Grunde 5 Tausend Seiten, aber alle statischen HTML (ohne Verwendung von Content-Manager, PHP, etc.).

Ich bin dabei, eine Navbar oben auf jeder Seite hinzuzufügen. z.B. Tabs oder Krümel oder jede Art von Kopfzeile mit js-Menü. (das genaue Design noch nicht entschieden)

meine Frage ist, ist es gute Praxis, einen iframe dafür zu verwenden? (Also, stattdessen haben gleiche Text in allen 5 tausend Seiten wiederholt, jeder wird nur einen kurzen iFrame auf eine Header-Datei zeigen)

bin mir bewusst, dass man HTTP-Anfrage für Geschwindigkeit reduzieren sollte, aber das ist in Ordnung mit mir. Irgendwelche anderen Probleme, die ich damit haben könnte? SEO oder irgendein technisches Problem?

+3

Fünftausend Seiten? Könnte ich fragen, wofür das ist? Auf dieser Ebene würde ich über eine dynamische Lösung nachdenken. Ich möchte nicht wissen, was du damit machen würdest, wenn ein kleiner Wechsel nötig ist. – Scorchio

+1

es ist im Grunde Tutorial Zeug und Blog ich arbeitete in den letzten 15 Jahren. xahlee.org im Grunde Code ich in Emacs und täglich hochladen (rsync) Dies ist der Grund, warum ich Iframe für Header verwenden möchte, so dass jede Änderung ich nur 1 Datei ändern kann anstelle von suchen/ersetzen durch Skript auf allen Seiten.Der Wechsel zum Content-Manager ist derzeit nicht erwünscht (Zeit, Design usw.) –

+1

Wenn Sie überhaupt können, betrachten Server-Seite als eine Option, so dass Sie anstelle eines iframe, eine #include-Zeile auf jeder Seite hinzufügen. Es ist auch möglich, den Webserver dazu zu bringen, vor und nach dem eigentlichen Inhalt ein festes HTML auszugeben. Dies kann oder kann nicht möglich oder bequem sein. Wenn es eine einzige Startseite gibt, von der all diese Seiten verlinkt sind und jede Seite mit anderen Seiten verknüpft ist, können Sie die Seiten selbst in einem iframe anzeigen, was bedeutet, dass Sie nur eine zusätzliche HTML-Seite erstellen und andere Seiten unberührt bleiben . –

Antwort

5

Die Verwendung von iFrames zur Anzeige von Teilen desselben Dokuments ist nicht empfehlenswert. Betrachten Sie das Dokument als Ganzes und das sollte Ihnen die Antwort geben. Oder bedenken Sie, dass es Geräte gibt, die bei Iframes nicht gut funktionieren. Apropos SEO ist witzig. Dokumente ohne Kopfzeile der Fußzeile (also keine internen Links) oder nur mit der Navigation, die auf andere iframe-Wrapper verweist, funktionieren nicht gut.

Wenn es Ihr Ziel ist, eine dynamische Sprache zu vermeiden, wie wäre es mit SSI (Server Side Includes)?

+0

ein beliebiges Beispiel für ein Gerät, das nicht gut mit iframe funktioniert? Auch bin ich mir nicht sicher, welches Problem iframe genau hat. Scheint, dass iframe mehr Gebrauch als Mechanismus für Widgets nimmt ... Serverseite einschließen ist interessant, aber ich will es vermeiden, wenn ich kann. (Es bedeutet, dass ich mich mit Servereinstellungen beschäftigen muss, die oft nicht von mir kontrolliert werden, und einige meiner HTML-Projekte sind eigenständige Bücher.) –

+0

Nicht alle mobilen Browser wissen, wie man mit iframes umgeht, und sowieso, der SEO-Verlust ist Grund genug, sie zu meiden. Normalerweise müssen Sie keine Einstellungen für die Verwendung von SSIs ändern. Hast du es tatsächlich versucht und gescheitert? – maus

+0

Wenn meine Header-Datei alle Skripte enthält, wenn ich den Header in der gesamten Datei zeige/einschließe, dann wird jedes Mal, wenn das Script neu geladen wird, der Header neu geladen. ? –

2

Sie müssen nicht zu einer vollständig dynamischen Lösung wechseln. Betrachten Sie diese einfache 3-Schritt-Lösung, vorausgesetzt, Sie sind auf Apache.

  1. fügen Sie eine Datei namens .htaccess in Ihr Stammverzeichnis mit dem Text AddType application/x-httpd-php .html darin. Dies macht Apache parse jeden PHP-Code in einer HTML-Datei.
  2. Setzen Sie <?php include('header.html'); ?> oben auf jeder Seite.
  3. Erstellen Sie eine einzelne header.html Seite, die dann auf jeder anderen HTML-Seite angezeigt wird.
+0

meine Header-Datei enthält alle Skripte, wenn ich Header auf alle Datei anzeigen/einbeziehen, dann neu laden, bedeutet jedes Mal Bündel von Skript aktualisieren als Header neu laden! ? –

+0

@Shahid, ja, jedes Mal, wenn Ihre Seite geladen wird, wird die enthaltene Header-Datei "neu geladen". Aber das ist nicht anders, als wenn der Code aus Ihrer Header-Datei in Ihrer Hauptdatei wäre. – JakeParis

+0

OK! Aber ich möchte die Header-Datei auf "RELOAD" stoppen? aber include! –

0

Nein bitte, verwenden Sie keine iframes. Ich fürchte, Sie verwenden einen schlechten Ansatz.

Sie müssen etwas fortschrittlicher (nichts wirklich kompliziert) bewegen. Nur ein paar Szenarien:

  1. nicht viel von einem Programmierer -> versuchen Joomla (http://www.joomla.org/) Wirklich einfach nur eine schöne Vorlage packen und erstellen Artikel (dumme CMS), um diese Mühlen zu bauen . der Seiten.
  2. Wie JAVA? Richtig -> versuchen Sie, eine Webapp mit enthält oder Fliesen
+0

meine Header-Datei enthält alle Skripte, wenn ich Header für alle Datei, dann neu laden, bedeutet jedes Mal Bündel von Skript aktualisieren als Header neu laden! ? –

Verwandte Themen