Neues Fenster: XHTML-strict + Barrierefrei ??
Philipp
- barrierefreiheit
Moin,
ich schreibe meine Webseiten bereits seit einiger Zeit XHTML Strict bzw. XHTML-1.1 konform und validiere sie auch.
Jetzt stellt sich folgendes Problem: Wie mach ich ein neues Fenster auf?
target="_blank" is deprecated, weil es mit frames zu tun hat, fällt also weg.
und javascript mag ich nicht benutzen, eben wegen Barrierefreiheit. Ich selbst bin übrigens fast immer mit ausgeschaltetem Js unterwegs.
Also, was tun??
Schönen Sonntag noch
Hallo Philipp,
Jetzt stellt sich folgendes Problem: Wie mach ich ein neues Fenster auf?
Gar nicht. Zumindest nicht mit XHTML 1.1 [1] / XHTML 1.0 Strict ohne Javascript.
target="_blank" is deprecated, weil es mit frames zu tun hat,
target fällt nicht nur wegen der Frames weg, sondern _auch_ wegen den neuen Fenstern. Diejenigen, die HTML 4.01 Strict / XHTML 1.0 Strict / XHTML 1.1 entworfen haben, gemeint haben, Dinge, die mit dem Verhalten der Webseite zu tun haben (wozu target ja auch zählt), sollten mit Scripten gelöst werden.
Also, was tun??
Transitional nehmen, JavaScript nehmen oder schlichtweg keine neuen Fenster öffnen. Quartum non datur.
Viele Grüße,
Christian
[1] Für die Korinthenkacker unter uns: XHTML 1.1 mit der Standard-DTD.
Hallo!
ich schreibe meine Webseiten bereits seit einiger Zeit XHTML Strict bzw. XHTML-1.1 konform und validiere sie auch.
Jetzt stellt sich folgendes Problem: Wie mach ich ein neues Fenster auf?
target="_blank" is deprecated, weil es mit frames zu tun hat, fällt also weg.und javascript mag ich nicht benutzen, eben wegen Barrierefreiheit.
Ich mache es so:
<a onclick="void(window.open('http://www.aua.com', '_blank', '')); return false;" href="http://www.aua.com">Flugzeug</a>
Javascript dem der es aktiviert hat, kein neues Fenster für jene die JS deaktiviert haben.
Im </archiv/> wurde die Sache x-mal diskutiert.
Beste Grüße
Viennamade
Hi,
Deine Frage wurde ja schon von meinen Vorrednern beantwortet. Ich möchte dazu noch sagen, dass du dein Vorhaben überhaupt überdenken solltest, da neue Fenster eigentlich unerwünscht sind.
Ich habe diese lästige Funktion sogar im Browser deaktiviert, da ich selbst entscheiden will, ob ich ein neues Fenster öffnen will oder nicht, und auch nicht eines geöffnet bekomme, wenn ich mit der linken Maustaste einmal kein neues Fenster öffnen will, wie es manche Webseiten meinen tun zu müssen.
Markus.
Hallo!
... da ich selbst entscheiden will, ob ich ein neues Fenster öffnen will oder nicht ...
Warum die Browserhersteller eigentlich nicht anzeigen - zB. per Maussymbol - ob bei Standardklick ein neues Fenster aufgeht oder nicht?
Beste Grüße
Viennamade
Hallo,
... da ich selbst entscheiden will, ob ich ein neues Fenster öffnen will oder nicht ...
Warum die Browserhersteller eigentlich nicht anzeigen - zB. per Maussymbol - ob bei Standardklick ein neues Fenster aufgeht oder nicht?
Diese Funktion kann man doch ganz einfach selbst einbauen:
(zumindest in Firefox, userContent.css)
a[target="_new"], a[target="_blank"] {
cursor: wait !important ;
/* trage hier deinen bevorzugten Cursor ein. */
}
Gruß
Alexander Brock
Hallo.
Diese Funktion kann man doch ganz einfach selbst einbauen:
(zumindest in Firefox, userContent.css)a[target="_new"], a[target="_blank"] {
cursor: wait !important ;
/* trage hier deinen bevorzugten Cursor ein. */
}
Schreibst du mir das dann bitte noch für jeden für ein neu zu öffnendes Fenster möglichen Fensternnamen, außer für die Namen der Fenster, die bereits offen sind?
MfG, at
Hallo at,
Diese Funktion kann man doch ganz einfach selbst einbauen:
(zumindest in Firefox, userContent.css)a[target="_new"], a[target="_blank"] {
cursor: wait !important ;
/* trage hier deinen bevorzugten Cursor ein. */
}Schreibst du mir das dann bitte noch für jeden für ein neu zu öffnendes Fenster möglichen Fensternnamen,
Das geht:
a[target], a[onclick], a[onmousedown], a[onmouseup], a[onmouseover], a[onmouseout], a[onfocus], a[onblur], a[ondblclick], a[onblur] {
cursor: wait !important;
}
<strong>;-)</strong>
Das enthält IMHO alle <a></a> Elemente, bei denen die Möglichkeit
besteht, dass der WebCoder vorgesehen hat, dass ein neues Fenster
geöffnet wird. Leider sind alle Verweise auf Frames und
alle JavaScript Spielereien (Bilderwechsel...) auch betroffen.
Aber a[target="_blank"], a[target="_new"] ist doch schonmal
ein guter Ansatz, so eine Markierung mit den aktuell
vorhandenen Möglichkeiten von Mozilla zu realisieren, oder?
Eine andere wäre vielleicht
a[target]:after {
content: "[" attr(target) "] ";
/* kann halt nicht jeder was damit anfangen */
}
[...] außer für die Namen der Fenster, die bereits offen sind?
Seeehr witzig. Du kannst dich ja mal dran versuchen.
Mir reicht im Moment das, was ich geschrieben habe.
Im Notfall such ich mir halt eine Extension,
die neue Fenster verbietet, außer ich öffne
sie manuell.
Gruß
Alexander Brock
Hallo.
Seeehr witzig. Du kannst dich ja mal dran versuchen.
Das hatte ich bereits vor einiger Zeit getan und mein Egebnis war leider auch nicht besser als deines.
Mir reicht im Moment das, was ich geschrieben habe.
Mir leider nicht; daher meine Frage.
MfG, at
Hallo at,
Mir reicht im Moment das, was ich geschrieben habe.
Mir leider nicht; daher meine Frage.
Willst du die Markierung
nur in deinem Browser auf allen Seiten im Internet oder
für deine Webseiten?
Zweiteres dürfte ja kein Problem sein,
dazu würde ich in das title Attribut
der betroffenen Links
"$beschreibung - Neues Fenster"
schreiben.
Gruß
Alexander Brock
Hallo.
Willst du die Markierung
nur in deinem Browser auf allen Seiten im Internet oder
für deine Webseiten?
Beides.
MfG, at
Hallo,
Beides.
Wie ersteres geht, habe ich bereits beschrieben,
für das zweite habe ich eine Firefox Extension gefunden:
http://texturizer.net/firefox/extensions/#targetalert
<zitat src="http://texturizer.net/firefox/extensions">
TargetAlert puts icons after certain hyperlinks to alert you of their destinations. It has icons for PDF documents, mailtos, and links that open in a new window.
</zitat>
Zufrieden?
Gruß
Alexander Brock
Hallo.
Zufrieden?
Wirklich vielen Dank für deine Mühe, aber ich wollte meinen Browser eigentlich nicht wechseln. Aber vielleicht finde ich ja auch noch etwas.
MfG, at
Hallo at,
Wirklich vielen Dank für deine Mühe,
Bitte, gern geschehen, hat sich auch für mich gelohnt,
ich werde diese Extension verwenden.
aber ich wollte meinen Browser eigentlich nicht wechseln.
Welchen Browser verwendest du denn?
(nur damit ich für den auch noch eine Extension suchen
oder bei Bedarf eine schreiben kann <strong>;-))</strong>)
Gruß
Alexander Brock
Hallo.
Welchen Browser verwendest du denn?
Nach Möglichkeit Opera oder OmniWeb.
(nur damit ich für den auch noch eine Extension suchen
oder bei Bedarf eine schreiben kann <strong>;-))</strong>)
strong {display: none;}
MfG, at
Hallo,
Willst du die Markierung
nur in deinem Browser auf allen Seiten im Internet oder
für deine Webseiten?Beides.
Warum schreibst du die besagten Regeln dann nicht ins Opera-Benutzerstylesheet (Preferences -> Page Style -> My Style Sheet)? Wenn du unter Configure Modes »My Style Sheet« für den Author Mode aktivierst, wird dieses auf jede Seite angewendet.
Oder missverstehe ich dich?
Mathias
Hallo.
Oder missverstehe ich dich?
Nein, du überschätzt lediglich meine Fähigkeiten.
MfG, at
Hallo,
Oder missverstehe ich dich?
Nein, du überschätzt lediglich meine Fähigkeiten.
Wo kommst du nicht weiter? Im besagten Opera-Einstellungsdialog ist der Pfad einer CSS-Datei angegeben, diese kannst du editieren und Regeln hinzufügen. Die Regel wurde ja schon gesagt, z.B.
a[target]:after {content: " [" attr(target) "]"; color:#a00;}
a[target] zielt auf alle a-Elemente mit einem target-Attribut.
a[target]:after bezieht sich auf den eingefügten Textinhalt am Ende des Elements.
Mit dem content-Attribut lässt sich festlegen, welcher Inhalt eingefügt werden soll, z.B. content:"bla".
attr() ist eine Sonderfunktion, mit der sich der Wert eines Attribut des jeweiligen Elements einfügen lässt. content:attr(target) fügt also den target-Attributwert ein. Drumherum kommen statische Zeichenketten, die beiden eckige Klammern. Die Teile werden einfach hintereinander notiert.
Das ganze dann noch dunkelrot gefärbt mit color.
Der Link <a href="bla" target="_blank">bla</a> sollte dadurch so dargestellt werden:
bla [_blank]
[_blank] ist Teil des Linktexts.
Bei mir habe ich etwas ähnliches im Einsatz nur für _blank-Links, weil mich die targets bei Framesets nicht stören:
a[target="_blank"]:before {content:"[^]"; color:#ff0000; font-weight:bold;}
Das Prinzip ist dasselbe, nur soll das target-Attribut nicht nur einfach existieren wie oben, sondern exakt den Wert _blank haben. Und das rote »[^]« soll am Anfang des Links (:before) eingefügt werden.
Mathias
Hallo.
Wo kommst du nicht weiter?
Oh, jetzt hast du so viel Mühe gemacht, und das für genau den Teil, der mir völlig klar ist.
Was mir fehlt ist ein Bookmarklet oder ähnliches, das die Funktion übernimmt, die von dir beschrieben CSS-Eigenschaften nicht anzuwenden, wenn das mittels "target" engegebene Fenster bereits offen ist und nur einen neuen Inhalt bekommt.
In CSS dürfte sich das nicht regeln lassen, während es in Javascript sicher eine einfache Übung darstellen sollte -- wenn man eben mit JS/DOM umgehen kann.
MfG, at
Hallo,
Was mir fehlt ist ein Bookmarklet oder ähnliches, das die Funktion übernimmt, die von dir beschrieben CSS-Eigenschaften nicht anzuwenden, wenn das mittels "target" engegebene Fenster bereits offen ist und nur einen neuen Inhalt bekommt.
In CSS dürfte sich das nicht regeln lassen, während es in Javascript sicher eine einfache Übung darstellen sollte -- wenn man eben mit JS/DOM umgehen kann.
Das ist einfach, aber ein Bookmarklet müsstest du manuell durch Klicken eines Buttons oder Drücken einer Taste für jedes Dokument erneut ausführen. Eine einfache Möglichkeit, ein JavaScript-Script automatisch auf jede aufgerufene Seite anzuwenden, gibt es nicht. Da die meisten Zweitfenster mit target="_blank" und nicht mit target="bestimmter_fenstername" geöffnet werden, sehe ich auch den Sinn nicht ganz. Die restlichen Zweitfenster sind dann Popup-Fenster. Es gibt keine zuverlässige Möglichkeit, ausgehend von einem Element herauszufinden, welchen Namen das Fenster hat, das beim Klick über JavaScript geöffnet wird.
Mathias
Hallo.
Eine einfache Möglichkeit, ein JavaScript-Script automatisch auf jede aufgerufene Seite anzuwenden, gibt es nicht.
Dann lag es also doch nicht unbedingt an mir, dass ich keine Lösung finden konnte.
Da die meisten Zweitfenster mit target="_blank" und nicht mit target="bestimmter_fenstername" geöffnet werden, sehe ich auch den Sinn nicht ganz.
Der Sinn liegt bei den "übrigen" -- in Abgrenzung zu den "meisten".
Es gibt keine zuverlässige Möglichkeit, ausgehend von einem Element herauszufinden, welchen Namen das Fenster hat, das beim Klick über JavaScript geöffnet wird.
Das muss es ja auch nur, wenn "target" oder "window.open" im Spiel sind -- dachte ich jedenfalls.
MfG, at
Hallo,
Hallo.
Diese Funktion kann man doch ganz einfach selbst einbauen:
(zumindest in Firefox, userContent.css)a[target="_new"], a[target="_blank"] {
cursor: wait !important ;
/* trage hier deinen bevorzugten Cursor ein. */
}Schreibst du mir das dann bitte noch für jeden für ein neu zu öffnendes Fenster möglichen Fensternnamen, außer für die Namen der Fenster, die bereits offen sind?
Ich kann leider nicht in CSS programmieren, weil CSS keine
Programmiersprache ist und man eine solche für dieses
Vorhaben bräuchte.
Ich habe allerdings noch eine Verbesserungsmöglichkeit gefunden:
a[target]:after {
content: "[" attr(target) "] ";
}
Gruß
Alexander Brock
Hallo.
Ich kann leider nicht in CSS programmieren, weil CSS keine
Programmiersprache ist und man eine solche für dieses
Vorhaben bräuchte.
Man kann CSS übrigens server- wie client-seitig zur Laufzeit generieren lassen. Damit wollte ich mich als nächstes befassen.
MfG, at
Hallo,
Man kann CSS übrigens server- wie client-seitig zur Laufzeit generieren lassen. Damit wollte ich mich als nächstes befassen.
Es ging um Einträge in der userContent.css im Firefox,
die Links, die sich in neuen Fenstern öffnen, irgendwie
markieren. Dass man CSS Serverseitig zur Laufzeit erzeugen
kann, wusste ich
(meine CSS Dateien heißen alle *.css.php
und enthalten alle folgenden Code:
<?php
ob_start("ob_gzhandler");
header("Content-Type: text/css");
?>
In dem Zusammenhang wäre eine serverseitige Browserweiche
vielleicht interessant (IE-Hacks nur dem IE anbieten)
)
aber wie willst du die CSS Eigenschaften ohne JavaScript
(und darauf würde ich gerne (bei SdN) verzichten)
zur Laufzeit ändern?
Gruß
Alexander Brock
Hi,
vielleicht machst Du es einfach so: http://www.dm-formationen2004.de/formationen.html?
freundliche Grüße
Ingo
Hallo Ingo!
vielleicht machst Du es einfach so: http://www.dm-formationen2004.de/formationen.html?
Du hast ja nicht um Kritik gebeten, den Mund verbieten laße ich mir aber schon gar nicht - g.
Eine _wunderschöne_ Seite! Der Plan der Sitzhalle sollte mE. am linken Rand sein (ich arbeite mit 1600x1200 ...).
Beste Grüße
Viennamade
Hi,
Du hast ja nicht um Kritik gebeten, den Mund verbieten laße ich mir aber schon gar nicht - g.
nö. Die Seite hatte ich nur verlinkt, weil ich die Bedenken der Verantwortlichen gegen die Öffnung externer Seiten im selben Fenster durch den Hinweis auf der Seite ausräumen konnte.
Eine _wunderschöne_ Seite! Der Plan der Sitzhalle sollte mE. am linken Rand sein (ich arbeite mit 1600x1200 ...).
Danke. Und Du hast Recht. Ich habe den Sitzplan (und übrigens auch die Anfahrtskizze) jetzt nicht mehr zentriert.
freundliche Grüße
Ingo
Hi,
vielleicht machst Du es einfach so: http://www.dm-formationen2004.de/formationen.html?
Sorry, aber was soll diese Seite?
Bei mir geht da nirgendswo ein neues Fester auf!
Hi,
vielleicht machst Du es einfach so: http://www.dm-formationen2004.de/formationen.html?
Sorry, aber was soll diese Seite?
Bei mir geht da nirgendswo ein neues Fester auf!
Lies, was auf der Seite steht.
cu,
Andreas