Torsten Krause: XHTML strict und "target"

Hi,
ich würde mein HTML-Projekt gerne in XHTML umschreiben (um meine Kenntnisse zu erweitern) und dabei gerne den Dokumententyp "strict" einhalten.

Jetzt meine Frage:
Da es in XHTML strict bekanntlich keine Frames gibt, gibt es bei <a> ebensowenig das target-Attribut und somit auch nicht die Möglichkeit ein Link in einem neuen Fenster zu laden (target="_blanc"). Gibt es evtl. eine andere (elegante) Lösung? Möglicherweise mit JavaScript (beherrsche ich leider nicht)?

mfg - Torsten "Zoidberg" Krause

  1. Moin!

    Da es in XHTML strict bekanntlich keine Frames gibt, gibt es bei <a> ebensowenig das target-Attribut und somit auch nicht die Möglichkeit ein Link in einem neuen Fenster zu laden (target="_blanc"). Gibt es evtl. eine andere (elegante) Lösung? Möglicherweise mit JavaScript (beherrsche ich leider nicht)?

    Nein, es gibt keine andere Lösung.

    Wenn du "target" brauchst, schreib' transitional (zwingt dich ja niemand, über "target" hinaus alle weiteren "Features" zu nutzen).

    Und wenn du unbedingt strict schreiben willst, verzichte einfach auf "target". Es ist sowieso eine gute Idee, dem Benutzer KEINE neuen Fenster aufzuzwingen, sondern ihm die Wahl komplett selbst zu überlassen.

    - Sven Rautenberg

    1. »»Es ist sowieso eine gute Idee, dem Benutzer KEINE neuen Fenster aufzuzwingen, sondern ihm die Wahl komplett selbst zu überlassen.

      Im Prinzip schon, aber wenn ich einen Link auf ein anderes Web-Projekt, z.B.: http://de.selfhtml.org/, habe, ist es mir (auch als Anwender) lieben, wenn dieses in einem neuen Fenster geöffnet wird.

      mfg

      1. Hi,

        Im Prinzip schon, aber wenn ich einen Link auf ein anderes Web-Projekt, z.B.: http://de.selfhtml.org/, habe, ist es mir (auch als Anwender) lieben, wenn dieses in einem neuen Fenster geöffnet wird.

        Wenn ein User das haben will, steht es ihm ja frei, das in einem neuen Fenster zu öffnen. Ich kenne keinen fensterfähigen Browser, der das nicht mit einfachsten Mitteln erlaubt.
        Andersrum ist es für den User wesentlich schwieriger. Probier mal einen mit target="_blank" versehenen Link im aktuellen Fenster zu öffnen.

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      2. Moin!

        Im Prinzip schon, aber wenn ich einen Link auf ein anderes Web-Projekt, z.B.: http://de.selfhtml.org/, habe, ist es mir (auch als Anwender) lieben, wenn dieses in einem neuen Fenster geöffnet wird.

        Immer, wenn ein Link erkennbar (!) auf ein anderes Projekt verweist, öffne ich diesen mit Shift-Klick oder über das Rechtsklickmenü meines Browsers - eventuell auch absichtlich im Hintergrund mit Strg-Shift-Klick, weil ich diese Seite später besuchen will, jetzt aber erstmal den eigentlichen Text lese.

        Damit wäre die Anwenderseite also komplett abgedeckt? Ja, denn alle, die kein neues Fenster haben wollen, klicken einfach normal drauf, und schon ist alles in Butter.

        Wenn du als Informationsanbieter den Benutzer zwingen willst, ein neues Fenster zu verwenden, hast du in XHTML die dir bekannten Optionen.

        - Sven Rautenberg

      3. Hi

        Im Prinzip schon, aber wenn ich einen Link auf ein anderes
        Web-Projekt, z.B.: http://de.selfhtml.org/, habe, ist es
        mir (auch als Anwender) lieben, wenn dieses in einem neuen
        Fenster geöffnet wird.

        Mir nicht. Was machen wir jetzt? :)

        Ausserdem wollen User die mit Tabs browsen (zB ich)
        vielleicht den Link in einem neuen Tab öffnen, vielleicht
        in einem neuen Fenster öffnen oder vielleicht im gleichen
        Tab im gleichen Fenster öffnen...

        Wieso nicht ihn selber entscheiden lassen?

        Gruss
        chlori

      4. Hi,

        Im Prinzip schon, aber wenn ich einen Link auf ein anderes Web-Projekt, z.B.: http://de.selfhtml.org/, habe, ist es mir (auch als Anwender) lieben, wenn dieses in einem neuen Fenster geöffnet wird.

        Nur daß dann jeder Besucher nicht mehr die Wahl hat. Ich verstehe natürlich auch den Wunsch (auch der Webseitenbetreiber), nicht von dem (leider) "üblichen" Verfahren abzuweichen und konnte kürzlich Zustimmung für diesen "Kompromiß" bekommen: http://www.dm-formationen2004.de/formationen.html.

        freundliche Grüße
        Ingo

        1. Hi,

          Nur daß dann jeder Besucher nicht mehr die Wahl hat. Ich verstehe natürlich auch den Wunsch (auch der Webseitenbetreiber), nicht von dem (leider) "üblichen" Verfahren abzuweichen und konnte kürzlich Zustimmung für diesen "Kompromiß" bekommen: http://www.dm-formationen2004.de/formationen.html.

          Den Text solltest Du aber nochmal überarbeiten, denn Shift-Linksklick bewirkt im Mozilla ein "Save link target as...".
          Ctrl-Linksklick dagegen öffnet im Mozilla ein neues Tab oder Fenster (je nach Konfiguration).

          cu,
          Andreas

          --
          MudGuard? Siehe http://www.Mud-Guard.de/
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          1. Hi,

            diesen "Kompromiß" bekommen: http://www.dm-formationen2004.de/formationen.html.

            Den Text solltest Du aber nochmal überarbeiten, denn Shift-Linksklick bewirkt im Mozilla ein "Save link target as...".

            ok, wo Du Recht hast... aber bevor ich jetzt diesen für Computerlaien bestimmten Tip ausufern lasse, gebe ich nicht-IE bzw. -Opera Usern doch lieber direkt eine Korrektur. Oder habe ich jetzt wieder einen anderen Browser vergessen? ;-)

            freundliche Grüße
            Ingo

    2. Hi,

      Und wenn du unbedingt strict schreiben willst, verzichte einfach auf "target". Es ist sowieso eine gute Idee, dem Benutzer KEINE neuen Fenster aufzuzwingen, sondern ihm die Wahl komplett selbst zu überlassen.

      Yep!

      Ich verwende allerdings target, wenn die externe Ziel-Website "schludert" und den Back-Button unbrauchbar macht.

      Oder wenn ich mehrere (Ergebnis-)Seiten in einem bestimmten Fenster haben möchte. Dann kann der Surfer diese durchblättern.

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. Hi

    ....

    Du meinst sicher _blank

    Gibt es evtl. eine andere (elegante) Lösung?

    Ja, die gibt's:
    Beim Internet Explorer: Shift + Klick
    Mozilla und andere: Was du selber definierst, meistens
    Ctrl + Shirt + Klick oder Ctrl + Klick oder Shift + Klick.

    Gruss
    chlori

    1. Hi

      Ctrl + Shirt + Klick

      Auf Deutsch:
      "Hemd überprüfen, dann Klicken..." :)

      Gruss
      chlori

  3. Hallo Torsten,

    XHTML strict und das Attribut "target" vertragen sich wirklich nicht, das hast du richtig erkannt. Ohne Javascript hast du keine Möglichkeit dem User vorzuschreiben ein neues Fenster zu öffnen.

    Mit Javascript geht das folgendermassen: (fürs Archiv und für Dich *g*)

    <a
        href="http://www.heise.de"
        |   onclick="return !(window.open(this.href,''));"
        |   |    >heise</a>
        |   |
       [1] [2]

    [1] Die URL ganz normal im Attribut "href" definieren, in unserem Beispiel: http://www.heise.de

    [2] "onclick" ist ein Event-Handler und erwartet Javascript/VBScript/JScript (ist das vollständig?). Nehmen wir Javascript und betrachten wir die Funktion ganz zu innerst:

    window.open(this.href,'') (--> http://de.selfhtml.org/javascript/objekte/window.htm#open)

    Erster Paramter: URL, in unserem Fall --> this.href
    'this' greift auf das jeweilige DOM-Objekt (hier: Anchor-Tag) zu, und 'this.href' zeigt demnach auf das "href"-Attribut in diesem Anchor-Tag.

    Zweiter Paramter: Target, in unserem Fall --> '', eben "blank/nix/nada" ;-)

    Rückgabe: Die Methode "open" gibt hier eine Referenz auf das geöffnete window-Objekt zurück, darum ist "!(window.open(url, target))" FALSE wenn das Fenster nicht korrekt geöffnet wurde.

    Warum jetzt aber der "return"-Befehl im "onclick"-Attribut?

    <a href="http://www.heise.de" onclick="retrun false;">heise</a> [3]
    <a href="http://www.heise.de" onclick="retrun true;">heise</a> [4]

    Bei aktiviertem Javascript wird bei [3] nichts passieren, bei [4] wird der Browser zu heise.de navigieren. Ist Javascript deaktiviert führt und der Browser in beiden Fällen zu Heise.

    Übersetzt auf das obige Beispiel [2] heisst das: Wenn das Fenster korrekt geöffnet wurde (via "onclick") wird FALSE zurückgegeben ("return false") und der href wird nicht ausgeführt. Wird das Öffnen des neuen Fensters durch Script-Fehler oder Popup-Blocker o.ä. verhindert, öffnet der Browser heise.de im alten Fenster. Ist Javascript ausgeschaltet wird der Event-Handler "onclick" überhaupt nicht beachtet und die Seite öffnet sich im alten Frame.

    Viel Spass damit ;-)

    Grüsse
    Siramon,
         ja der Penner aus Nr. 14