Zum Inhalt springen

xhtml - Ersatz für target

Erstellt am 12. November 2008 · 11 Antworten · letzte Antwort am 25. November 2008

Tags: Links, JavaScript & AJAX, Frage

karinchristina ·

xhtml und target="_blank" vertragen sich nicht. Das ist ja nun hinlänglich bekannt.
Das target-Attribut raus, weg zu bekommen, das das krieg ich mit TS ganz gut hin

und hier wirds interessant:
Ich möcht an Stelle des target-Attributs mit ein bisserl schwindeln dafür sorgen,
dass sich externe Links xhtml-valide doch in neuen Seiten öffnen!
Also füge ma dem Link ein bisserl Javascript hinzu:
onclick="window.open(this.href,'_blank'); return false;"

//
<!--
  also aus:                                      -->
<a href="http://linkziel.tld" target="_blank">Linktext</a>
<!--
  wird:                                          --> 
<a href="http://linkziel.tld" onclick="window.open(this.href,'_blank'); return false;">Linktext</a>

Welche Möglichkeit seht ihr, dieses onclick jedem externen Link per Typoscript hinzufügen zu lassen?
interne Links bleiben natürlich auf der Seite, externe Links möcht ich in ein neues Fenster schicken, das eigene Fenster dabei geöffnet halten, und trotzdem xhtml valide sein.
Funktioniert zwar nur bei aktiviertem Javascript, is aber besser als nix...
... bloß wie bring ich TYPO3 dazu?

Norman2k ·
karinchristina schrieb

xhtml und target="_blank" vertragen sich nicht. Das ist ja nun hinlänglich bekannt.

Wirklich? Wenn du XHTML 1.1 Oder XHTML 1.0 strict meinst würde ich dir Recht geben, so aber nicht.
Wieso verwendest du einen Doctype, wo gewünschte Funktionen nicht valide sind? Entweder lebe damit, dass du keine valide Seite hast oder verwende einen anderen (passenden) Doctype. Aber dann mit JS zu "tricksen" kann ich irgendwie nicht nachvollziehen.

#paralyzed# (Meine Meinung)

karinchristina ·

Ja, ich meine xhtml1.1, und das ist die aktuelle Version.
xhtml2 kommt bald, wird aktuell vom w3c entwickelt, und target wird aller Voraussicht wieder valide sein (warum wohl?)

Warum ich xhtml einsetze?
Einerseits weil es der aktuelle Standard ist.
Andererseits weil ich mir die Nutzung der daraus resultierenden Vorteile offen halten möchte.

Das "target" in der aktuellen xhtml-Version nicht valide ist und in der kommenden aber doch wieder valide hat seinen Grund.
Die ehemalige Argumentation des w3c warum target nicht valide ist: "... dem User alle Freiheit, wir zwingen dem User kein neues Fenster auf..." wird vom w3c fallengelassen, in der nächsten xhtml-Version, der 2er wird "target" wieder valide sein. Mit dazu beigetragen hat sicher auch die Entwicklung von Browsern, die tabbed browsing ermöglichen!


Nun however, ich wollte nicht diskutieren warum, ich wollte diskutieren wie.

Wieso verwendest du einen Doctype, wo gewünschte Funktionen nicht valide sind?

  • Ich schreibe prinzipiell in aktuellem Code.

  • Kunde wünscht externe Links in neuem Fenster.

  • Ich suche nach einer Lösung die beides valide ermöglicht.

just2b ·

xhtml-trans ist aktueller code, ist valide und dein target ist erlaubt. doch alles wunderbar

warum muss es strict sein?

karinchristina ·

Na gut, dann steig ma halt in diese Diskussion weiter ein...

xhtml-trans ist aktueller code

Korrektur: xhtml 1.0 transitional ist eben kein aktueller Code!

xhtml1.1 ist die vom w3c aktuell empfohlene Variante die prinzipiell für neue Webseiten einzusetzen ist.Punkt ... und ja, auch ich hab noch alte Seiten am Laufen, sogar noch solche mit phpCMS, die ich von html mit transitional zu xhtml gemacht hab, weil die Kunde für mehr Aufwand nicht mehr bezahlen will.

Und "transitional" ist, wie der Name in der wörtlichen Übersetzung schon sagt eine Übergangs-Lösung welche auf bestehenden Webseiten definiert werden kann, falls der Aufwand für das komplette Umschreiben zu groß wäre.
Umschreiben? Das Umschreiben von der SGML-Sprache html in die XML-Sprache xhtml war da gemeint.
"transitional" ist in xhtml1.1 gar nicht mehr definiert, das gabs nur xhtml1.0!

Wenn eine Seite wirklich accessibel sein soll, dann führt an xhtml1.1 eigentlich kein Weg vorbei.

Und nach den WCAG ist der Einsatz von zB Javascript durchaus gestattet. So sende ich zB manche Formulare mit einem Maus- oder Tastatur-Event ab (Javascript) und zeige den Submit-Button nur, wenn Javascript deaktiviert ist. Duraus zulässig, entspricht voll den WCAG denn in manchen Fällen bringts ein Mehr an usability (und ist weit verbreitet).

😢 Ich möcht ja bloss eine kitzekitzekleine Javascript-Anweisung bei allen externen Links über TS dazu schreiben lassen...

Und wen auch immer die Lösung interessiert, hier ist eine mögliche:
Ich hab mir nun ein Javascript geschrieben, welches jeden Link prüft, ob er zur baseURL führt, falls ja öffnet es im selben Fenster, falls nein öffnet es in einem neuen Fenster.
Momentan ist im Script die baseURL noch hardgecodet, falls ich mal Zeit hab, schreib ich eine Extension die ich dann auch veröffentlich...

Lieber wärs mir allerdings, wenn diese Aufgabe beim Generieren der Seite vom TS übernommen werden würde...

Liebe Grüße aus Wien
an Alle, die diese Diskussion (interessiert oder amüsiert?) mitverfolgen!

Karin 8-)

karinchristina ·

Danke für den Hinweis!

rel kann eingesetzt werden, um dem Browser mitzuteilen, wozu dieser Link in Beziehung (relation) steht.
Von sich aus öffnet der Browser mit rel="external" aber noch nicht in einem neuen Fenster oder Tab.

Ich kann derzeit über dieses Attribut dem User nur zeigen ob der Link auf eine externe Seite führt oder nicht. Es bleibt dem User dann überlassen, ob er auf diesen Link dann mit der linken oder der mittleren Maustaste klickt...
... und welchem "als normal anzusehenden User" ist der Klick-Unterschied zwischen linker und mittlerer Maustaste schon bekannt? (Geht das eigentlich nur im FF oder auch im IE?)

Aktuell könnt ich wiederum nur mit einem Javascript rel abfragen und falls rel="extern" gesetzt ist, window.open(this.href); ausführen.

Erst wenn wir css3 haben werden, können wir ohne Javascript und nur mit css angeben, ob der Link abhängig von der Angabe im rel-Attribut im selben Fenster/Tab oder in einem Neuen öffnen soll und können sogar steuern ob Fenster oder Tab.

suit ·

vorweg: untenstehendes soll kein persönlicher angriff sein, nur eine richtigstellung potentiell gefährlicher falschaussagen

xhtml1.1 ist die vom w3c aktuell empfohlene Variante die prinzipiell für neue Webseiten einzusetzen ist.Punkt ...

xhtml 1.1 ist die modulbasierende variante von xhtml XHTML™ 1.1 - Module-based XHTML - sie wird vom w3c als working draft herrausgegeben

und auch wenns eine empfehlung wäre: eine empfehlung heisst nicht, dass sie prinzipiell für neue webseiten einzusetzen ist (!) recommendation heisst im sinne des w3c dass die sache in 2 marktrelevanten browsern implementiert ist

wer xhtml 1.1 zu verwenden gedenkt, sollte sich darüber im klaren sein, dass das dokument als application/xhtml+xml oder application/xml versandt wird - der xml-prolog soll vorhanden sein

der internet explorer versteht beide mime-typen NICHT und wenn das dokument als text/html verschickt wird, verliert man den nutzen der xml-module (xhtml 1.1 wird ziemlich sinnlos) und der ie6 verschwindet getrost im quirksmode

christoph schneegans hat hier einen netten artikel dazu geschrieben http://schneegans.de/web/xhtml/

Wenn eine Seite wirklich accessibel sein soll, dann führt an xhtml1.1 eigentlich kein Weg vorbei.

zugänglichkeit hat nichts mit xhtml 1.1 zu tun, auch ein text-dokument kann zugänglich sein, oder eine html 3 seite - sie muss nur vernünftig ausgezeichnet werden

mit vernünftigen xhtml 1.1 schließt du jedenfalls etwa 60% der benutzer vollständig von der benutzung aus - das ist NICHT zugänglich

zudem fehlt in xhtml 1.1 bislang immer noch das lang-attribut

Duraus zulässig, entspricht voll den WCAG denn in manchen Fällen bringts ein Mehr an usability

wenn du etwas behauptest, zitiere auch die quellen
Techniques for Web Content Accessibility Guidelines 1.0
"10.1 Until user agents allow users to turn off spawned windows, do not cause pop-ups or other windows to appear and do not change the current window without informing the user."

zusammenfassend: für dich gibts 2 lösungen

a) verzichte auf das target-attribut zugunsten der zugänglichkeit
b) verwende eine DTD die deinen anforderungen entspricht

karinchristina ·

@Forums-Moderatoren:
Bitte diesen Thread zu sperren, zu löschen oder was auch immer angebracht ist.

Ich hatte nicht vor, mit einer einfachen Frage einen Flame-War zu inszinieren und ich entschuldige mich bei den Foren-Teilnehmern dafür dass es doch einer geworden ist.

  • Falls ich nach diesen Erfahrungen wieder hier posten sollte, werde ich darauf achten, nur harmlose Fragen zu stellen bzw zu beantworten ...

  • Falls jemand wider Erwarten weiter flamen will, verweise ich auf einschlägige newsgroups, zB.: news:de.alt.flame ...

Liebe Grüße aus Wien
Karin

einpraegsam.​net ·

Diesen Thread werde ich nicht löschen, denn er ist fachlich nicht verkehrt.

Ich kann nur jeden ermutigen hier zu posten, sofern es nicht tausend Mal die gleichen Themen sind 😃

Grüße, Alex