Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Netzwerke>HTML 4.01 Strict: Zielfenster wie realisieren?

HTML 4.01 Strict: Zielfenster wie realisieren?

dom_beta28.03.1109:46
Hallo,

ich habe gelesen, daß HTML 4.01 Strict die alte Unterstützung für Zielfenster mit dem Attribut "target" nicht mehr unterstützt.

Gibt es eine Alternative mit der ich einen Verweis in einem neuen Fenster öffnen lassen kann mit HTML 4.01 Strict?

Ergänzung: Die Lösung muß ohne Einsatz von JavaScript funktionieren!


Vielen Dank!
„...“
0

Kommentare

dom_beta28.03.1110:16
:EDIT:

Ich sehe gerade, wenn ich HTML 4.01 Strict einsetzen würde, dann kann ich ja keine Google Karten etc. mehr einblenden, weil es Attribute gibt zum iFrame-Tag die nicht mehr unterstützt werden.


Ich habe da mal was durch den W3C Validator jagen lassen und der folgende Fehler entdeckt hat:

Weiß jemand wie ich diese nicht mehr unterstützen Tags und Attribute entsprechend ersetzen kann?




Validation Output: 12 Errors

1. Error Line 41, Column 24: character data is not allowed here

<blockquote>Text ... <br>





2. Error Line 41, Column 52: document type does not allow element "BR" here; missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE", "DIV", "ADDRESS" start-tag

<blockquote> Text ... <br>






3. Error Line 43, Column 27: document type does not allow element "BR" here; missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE", "DIV", "ADDRESS" start-tag

.... <br>





4. Error Line 44, Column 35: end tag for "BLOCKQUOTE" which is not finished

.... </blockquote>





5. Error Line 51, Column 15: there is no attribute "WIDTH"

<iframe width="640" height="480" frameborder="0" scrolling="no" marginheight="0…






6. Error Line 51, Column 28: there is no attribute "HEIGHT"

<iframe width="640" height="480" frameborder="0" scrolling="no" marginheight="0…





7. Error Line 51, Column 46: there is no attribute "FRAMEBORDER"

… width="640" height="480" frameborder="0" scrolling="no" marginheight="0" marg…




8. Error Line 51, Column 60: there is no attribute "SCROLLING"

…eight="480" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" sr…




9. Error Line 51, Column 78: there is no attribute "MARGINHEIGHT"

…order="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.goo…




10. Error Line 51, Column 94: there is no attribute "MARGINWIDTH"

…ing="no" marginheight="0" marginwidth="0" src="http://maps.google.de/maps?f=q&…




11. Error Line 51, Column 102: there is no attribute "SRC"

… marginheight="0" marginwidth="0" src="http://maps.google.de/maps?f=q&amp;sour…




12. Error Line 51, Column 458: element "IFRAME" undefined

…amp;z=14&amp;iwloc=A&amp;output=embed"></iframe><br><small><a href="http://map…



Vielen Dank!


PS: Ich hoffe ich habe nichts vergessen .....
„...“
0
sierkb28.03.1111:57
dom_beta
ich habe gelesen, daß HTML 4.01 Strict die alte Unterstützung für Zielfenster mit dem Attribut "target" nicht mehr unterstützt.

Gibt es eine Alternative mit der ich einen Verweis in einem neuen Fenster öffnen lassen kann mit HTML 4.01 Strict?

Ganz einfache Antwort: da Frames nix als Bäh! sind und schon immer mehr Nachteile als Vorteile hatten und immer noch haben, sind Frames weder in HTML 4 Strict anerkannt und definiert noch in XHTML 1.0 (was nix Anderes ist als das SGML-basierte HTML 4.01 umformuliert als XML) und erst recht nicht in XHTML 1.1 und auch nicht in HTML5/XHTML5.

Wenn Du, gegen den gesunden Menschenverstand und gegen die Benutzbarkeit unbedingt Frames verwenden willst oder musst, dann verwende einfach eine DTD bzw. einen Doctype, der Frames definiert hat, und schon geht's auch beim Validator durch. Verwende also die Frameset-DTD bzw. den extra dafür geschaffenen Frameset-Doctype:

Also statt
HTML 4.01: 7 The global structure of an HTML document: 7.2 HTML version information
http://www.w3.org/TR/html401/struct/global.html#h-7.2
The HTML 4.01 Frameset DTD includes everything in the transitional DTD plus frames as well. For documents that use this DTD, use this document type declaration
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">

verwende stattdessen:


HTML 4.01: 7 Die globale Struktur eines HTML-Dokuments: 7.2 HTML-Versionsinformation [url][/url]
http://edition-w3.de/TR/1999/REC-html401-19991224/struct/global.html#h-7.2
Die HTML 4.01 Frameset DTD beinhaltet alles aus der »Transitional DTD« und zusätzlich Frames. Für Dokumente, die diese DTD benutzen, verwenden Sie die Dokumenttyp-Deklaration:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
        "http://www.w3.org/TR/html4/frameset.dtd">

Was die Fehler angeht, die der Validator bemängelt, so schau in die HTML4-Spezifikation rein (oben verlinkt, einmal das engl. Original, das andere Mal die offizielle deutsche Übersetzung), wie die betreffenden Elemente, die bemängelt werden, definiert sind und welche Attribute sie haben dürfen, und welche ihnen von Dir angedichtet worden sind.

Das Element <blockquote> ist laut Spezifikation zum Beispiel definiert als Blockelement (<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- long quotation ).
Und das Blockelement ist hier wie folgt definiert:
<!ENTITY % block
     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
      BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">

Du siehst an letzterer Definition schon, welche HTML-Elemente da als Blockelement aufgezählt sind. "inline", "CDATA" und "PCDATA" sind dort nicht enthalten.
Das heißt im Klartext: Blockelemente MÜSSEN als nachfolgendes Kind-Element ein weiteres Blockelement haben und DÜRFEN KEIN "inline", "CDATA" oder "PCDATA" enthalten.

Ganz normaler Text (welcher per definitionem CDATA (Character DATA) wäre), so wie Du ihn da reingeschrieben hast, darf also nicht folgen. Du musst um Deinen Text also ein anderes Blockelement legen, welches CDATA enthalten darf. Und in diesem Fall böte sich von der Semantik bzw. dem inhaltlichen Zusammenhang her besonders ein Element an, das Element für einen Absatz: <p>. Es sei denn, Du willst nur einen Einzeiler zitieren, dann würde statt <blockquote> wohl eher <q> infrage kommen und angeraten sein. <q> darf inline-Code beinhalten im Gegensatz zu <blockquote>.
http://edition-w3.de/TR/1999/REC-html401-19991224/struct/text.html#edef-BLOCKQUOTE
9.2.2 Zitate: Das BLOCKQUOTE- und das Q-Element
Diese beiden Elemente kennzeichnen zitierten Text. BLOCKQUOTE ist vorgesehen für lange Zitate (Block-Level-Inhalt) und Q für kurze Zitate, der keine Absatzwechsel erfordert (inzeiliger Inhalt).

Anmerkung: in der deutschen Übersetzung auch die Anmerkungen der Übersetzer (sandfarben unterlegte Kästchen) mal lesen. Diese Anmerkungen sind offiziell genehmigt und heben die deutsche Übersetzung gegenüber dem engl.-sprachigen Original heraus. Sie geben so manches Mal wertvolle Zusatzinformationen, die das engl.-sprachige Original nicht anbietet.

So, jetzt kennst Du den Hintergrund der genannten Validator-Fehlermeldungen. Und so gehst Du vor mit allen anderen angemängelten Fehlern. So wie ich das sehe, verwendest Du da an den betreffenden Stellen jeweils Elemente und Attribute, die dort entweder nicht hingehören oder/und an der Stelle nicht zulässig sind, weil sie schlichtweg so und an der Stelle bzw. überhaupt nicht von der Spezifikation her definiert sind (da hat sich über die Jahre in den Köpfen mancher Autoren so Manches fälschlicherweise etabliert, was syntaktisch einfach unsinnig und falsch ist und niemals von der Spezifikation gedeckt war). Wirf also mal einen Blick in die Spezifikation bzw. deren deutsche Übersetzung, dort steht genau drin, welche Attribute wo und wie zulässig und definiert sind.

Ein guter Browser, der im Strict-Mode arbeitet (und dazu hast Du ihn in Deinem HTML-Dokument ja per Doctype veranlasst), wird diese betreffenden angemängelten Stellen also auch nicht umsetzen, er verbringt höchstens Zeit damit, sie zu parsen. Also weg damit und richtig schreiben, dann ist der Validator zufrieden und der Browser auch bzw. der Browser parst dann schneller, weil er sich nicht unnötig an solchen Dingen abarbeiten und aufhalten muss.

Und wenn Du nicht alles von Hand verbessern willst (bei dem vorliegenden Dokument scheint's ja noch zu gehen, das ist ja recht übersichtlich, da kann man das noch schnall und gut per Hand korrigieren), dann benutze HTML Tidy dafür. Für fast jeden Browser gibt's da mittlerweile eine Extension für. Und auch der Validator hat seit Version 0.8 die TidyLib intus, und Du kannst in der Feinkonfiguration dess Validators anklicken, dass er das Ergebnis mal durch Tidy jagen soll, das wird Dir dann auf der Ergebnisseite gesondert angezeigt. Den Code dann überprüfen und ggf. mit Copy & Paste übernehmen.

Gruß,
Sierk
0
Sitox
Sitox28.03.1112:27
Ganz einfache Antwort: da Frames nix als Bäh! sind und schon immer mehr Nachteile als Vorteile hatten und immer noch haben, sind Frames weder in HTML 4 Strict anerkannt und definiert noch in XHTML 1.0 (was nix Anderes ist als das SGML-basierte HTML 4.01 umformuliert als XML) und erst recht nicht in XHTML 1.1 und auch nicht in HTML5/XHTML5.
An welcher Stelle war denn von Frames die Rede?
0
schleiftier28.03.1112:32
Anstatt eines iframes könntest du das object-Element verwenden:
0
sierkb28.03.1112:42
Gibt es eine Alternative mit der ich einen Verweis in einem neuen Fenster öffnen lassen kann mit HTML 4.01 Strict?

Nein. Im Rahmen von HTML 4.01 Strict gibt's da keine von der Spezifikation gedeckte und valide Möglichkeit. Gab es nie. Und wird's auch nie geben. Dafür gibt es HTML 4.01 Frameset (HTML 4.01 Transitional + Frames).

Oder Du benutzt (im XML-/XHTML-Zusammenhang) XFrames:

W3C: XFrames
Michael Jendryschik: XFrames, Deutsche Übersetzung
Wikipedia: XFrames

Desweiteren sei am Rande bemerkt: zur speziellen Gestaltung von Sprungzielen innerhalb eines Dokuments unter bestimmten Voraussetzungen und in Abhängigkeit zu zu definierenden Regeln gibt's übrigens auch die CSS3 :target-Pseudoklasse.

W3C: CSS3 Selectors Level 3: 6.6.2. The target pseudo-class :target
Jens Meiert: CSS 3: Die :target-Pseudoklasse
0
dom_beta28.03.1113:22
sierkb
Ganz einfache Antwort: da Frames nix als Bäh! sind und schon immer mehr Nachteile als Vorteile hatten und immer noch haben, sind Frames weder in HTML 4 Strict anerkannt und definiert

Wenn Du, gegen den gesunden Menschenverstand und gegen die Benutzbarkeit unbedingt Frames verwenden willst

Von Frames habe ich auch gar nicht gesprochen.

Ich möchte es gerne erreichen, daß bei einem Klick auf einem bestimmten Link die Adresse in einem neuen Fenster geöffnet wird.

Im "alten" HTML ging dies mit "target", da es dieses Attribut nicht mehr gibt in HTML 4.01 Strict wollte ich wissen, wie man das in HTML Strict umsetzen kann?
„...“
0
dom_beta28.03.1113:24

mein Beitrag wurde verschluckt.

Was los?!
„...“
0
sierkb28.03.1113:28
sitox:

Ja, Du hast Recht. Danke für den Hinweis. Dann stellt sich das Ganze natürlich etwas anders dar (ohne dass das Gesagte aber zurückzunehmen wäre ).

Ich hatte "Frames" gelesen, es handelt sich hier aber offenbar um iFrames, die da verwendet und angemängelt werden. Sorry, dom_beta. Mein Fehler.

Wenn iFrames verwendet werden sollem, muss dom_beta laut und und dann wohl den Transitional-Doctype mit der loose-DTD wählen:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

Dann dürfte auch der Validator sich an obigen Stellen wahrscheinlich nicht mehr beschweren. Testweise kannst Du ja mal vorher den Validator per Klapp-Menü unter "More Options" "Document Type" direkt anweisen, Deine Seite gegen "HTML 4.01 Transitional" zu validieren. Das macht er dann vorrangig, auch wenn Du in Deinem zu prüfenden Dokument in diesem Fall die Strict-DTD verwendest. Dann siehst Du ja, was er dazu sagt bzw. ob obige Fehlermeldungen dann verschwinden oder nicht.

Sorry, dom_beta, dass ich Dich da durch meinen Lesefehler auf eine etwas falsche Fährte geführt habe.

schleiftier:

+1
0
sierkb28.03.1113:29
sitox:

Ja, Du hast Recht. Danke für den Hinweis. Dann stellt sich das Ganze natürlich etwas anders dar (ohne dass das Gesagte aber zurückzunehmen wäre ).

Ich hatte "Frames" gelesen, es handelt sich hier aber offenbar um iFrames, die da verwendet und angemängelt werden. Sorry, dom_beta. Mein Fehler.

Wenn iFrames verwendet werden sollem, muss dom_beta laut und und dann wohl den Transitional-Doctype mit der loose-DTD wählen:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/[b]loose.dtd[/b]">

Dann müsste es klappen, dann dürfte auch der Validator sich an obigen Stellen nicht mehr beschweren. Testweise kannst Du ja mal vorher den Validator per Klapp-Menü unter "More Options" "Document Type" direkt anweisen, Deine Seite gegen "HTML 4.01 Transitional" zu validieren. Das macht er dann vorrangig, auch wenn Du in Deinem zu prüfenden Dokument in diesem Fall die Strict-DTD verwendest.

Sorry, dom_beta, dass ich Dich da durch meinen Lesefehler auf eine etwas falsche Fährte geführt habe.

schleiftier:

+1
0
dom_beta28.03.1113:38

Apropos, MTN verwendet kein gültiges XHTML 1.1

56 Errors, 13 warning(s)


http://validator.w3.org/check?uri=www.mactechnews.de&charset=%28detect+automatically%29&doctype=Inline&group=0
„...“
0
iMonoMan
iMonoMan28.03.1119:35
dom_beta
Schonmal die Amazon-Seite validieren lassen?
0
dom_beta29.03.1108:47
schleiftier
Anstatt eines iframes könntest du das object-Element verwenden:

Hallo,

das habe ich gemacht, allerdings er gibt es dann gültiges HTML 4.01 Strict.

Er stört sich an der &amp Angabe in der Google-Adresse.

<object data="http://maps.google.de/maps?f=q&amp [.. ];source=s_q&amp;hl=de&amp;geocode=&amp;q=k%C3%B6ln&amp;aq=&amp [ ... ]></object>



Hat da jemand eine Idee?
„...“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.