Dr. Mabuse: <a href="javascript:void();">

Tach, liebe Forumsgemeinde! :-P

Kurze Problembeschreibung:

  • Ich habe auf der linken Seite mehrere Tabellenzellen, mit denen ich auf der rechten Seite Webseiten in einem Iframe aufrufen möchte.
  • Die Text-Links innerhalb der Tabellenzellen sind nur Dummies, um ein Patschehändchen zu erzeugen.
  • Die Option mittels rechter Maustaste den Link in einem neuen Fenster zu öffnen soll verhindert werden.

Kurze Situationsbeschreibung:

  • Verwende ich als Referenz für den Anker ein Rautezeichen, wird diese Option leider nicht verhindert und darüber hinaus der Parent jedesmal erneut geladen, wobei Opera hierbei keine neue Seite in den Iframe lädt, warum auch immer.
  • Keine Referenzangabe oder leere Anführungszeichen wie etwa href="" verhindern leider das Patschehändchen, bzw öffnen in einem neuen Fenster eine Leerseite.
  • Wenn ich als Referenzangabe "javascript:void();" verwende, reagieren die Browser unterschiedlich.
    Netscape, Mozilla, Firefox und Safari erkennen sofort, daß hier nichts zu holen ist und liefern bei Verwendung der rechten Maustaste ein abgespecktes Menue ohne die Option "Link in neuem Fenster öffnen"
    Der Internet Explorer zeigt zwar das komplette Menue, erkennt aber anscheinend auch, daß nix zu holen ist und reagiert bei der Betätigung des entsprechenden Menue-Links erst gar nicht.
    Opera ist der einzige Browser, mit dem sich ein neues Fenster öffnen läßt mit dem Hinweis "javascript:void();" in der Adresszeile.

Kurze Frage:
Wie krieg ich diesen alten Spielverderber dazu, daß er mir mit der rechten Maustaste kein neues Fenster mehr öffnet?

Hier der abgespeckte Quellcode:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title></title>
<style type="text/css">
body { margin: 0px 0px 0px 0px;}
#tab { width:100%; height:100%; border: 0px solid #000000; }
#menu {width:200px; background: #DCDCDC;}
#inline { width:100%; height:100%;}
#hallo {padding: 10px; background: #ffffff ; width:100px; }
</style>
</head>
<body>
<table cellspacing="0" id="tab">
<tr><td id="menu" valign="top"><br>

<table cellspacing="0" border="1" align="center">
<tr><td id="hallo" onclick="javascript:main.location.href='http://www.google.de';">
<a href="javascript:voidoid();">Google</a>
</td></tr></table>

</td>
<td><iframe src="http://www.jimmy-hartwig.de" id="inline" name="main" frameborder="1"></iframe>
</td></tr></table>
</body></html>

  1. nimm den link raus ;) du hast sowieso ein onlick event auf der tabellenzelle, das reicht aus

    in einem href-attribut etwas anderes als einen link/anker zu platzieren ist sowieso etwas widersinnig ;)

    1. nimm den link raus ;) du hast sowieso ein onlick event auf der tabellenzelle, das reicht aus

      Das reicht zwar aus, erzeugt über dem Text dann aber einen übel aussehenden senkrechten Strich anstelle des hübschen Patschehändchens. Grafiken helfen mir diesbezüglich übrigens auch nicht weiter, da eine nicht-verankerte Grafik den onclick-event der Tabellenzelle unterbindet.

      in einem href-attribut etwas anderes als einen link/anker zu platzieren ist sowieso etwas widersinnig ;)

      Es geht mir auch darum, daß die Möglichkeit ein neues Fenster mittels Rechtsklick zu öffnen unterbunden wird.
      Das Ganze ist zugegeben etwas merkwürdig.
      :-)

      1. nimm den link raus ;) du hast sowieso ein onlick event auf der tabellenzelle, das reicht aus

        Das reicht zwar aus, erzeugt über dem Text dann aber einen übel aussehenden senkrechten Strich anstelle des hübschen Patschehändchens.

        was hindert dich daran, der tabellenzelle die css eigenschaft

          
        cursor: pointer;  
        
        

        zu geben? dann hast du auch eine nette hand

        Grafiken helfen mir diesbezüglich übrigens auch nicht weiter, da eine nicht-verankerte Grafik den onclick-event der Tabellenzelle unterbindet.

        dann gibt der grafik ein onlick welches das onlick des elternelements ausführt

          
        onclick="this.parentNode.onclick();"  
        
        

        Es geht mir auch darum, daß die Möglichkeit ein neues Fenster mittels Rechtsklick zu öffnen unterbunden wird.

        warum sollte man eine onlick attribut mit einem rechtsklick verfolgen können? wenn kein href existiert, kannst du den href auch nicht in einem neuen fenster öffnen - ist klar wenn du href="javascript:machmeinefunktion();" schreibst, aber du sollst nur ein onclick ohne href verwenden und nicht in einem <a /> sondern im td

        funtkioniert einwandfrei

        1. was hindert dich daran, der tabellenzelle die css eigenschaft

          cursor: pointer;

          
          > zu geben? dann hast du auch eine nette hand  
          
          Ich probier das mal aus mit dem Zellen-Text. Mal sehen ob' s klappt?  
          Eigentlich ändern sich auch Textfarbe und Farb-Hintergrund bei mouseover, ich hab das der leichteren Überschaubarkeit wegen aber hier weggelassen.  
            
          
          > > Grafiken helfen mir diesbezüglich übrigens auch nicht weiter, da eine nicht-verankerte Grafik den onclick-event der Tabellenzelle unterbindet.  
          >   
          > dann gibt der grafik ein onlick welches das onlick des elternelements ausführt  
          > ~~~javascript
            
          
          > onclick="this.parentNode.onclick();"  
          > 
          
          

          Es geht mir auch darum, daß die Möglichkeit ein neues Fenster mittels Rechtsklick zu öffnen unterbunden wird.
          warum sollte man eine onlick attribut mit einem rechtsklick verfolgen können? wenn kein href existiert, kannst du den href auch nicht in einem neuen fenster öffnen - ist klar wenn du href="javascript:machmeinefunktion();" schreibst, aber du sollst nur ein onclick ohne href verwenden und nicht in einem <a /> sondern im td

          funtkioniert einwandfrei

          Ja, iss klar, mir ging' s halt haupsächlich um das Händchen :-D
          Werd halt mal kucken, ob ich das mit CSS hinkriege.
          Erklärt aber immer noch nicht die Extrawurst des Opera.
          Man liest sich.
          Gruß Dr. M.

  2. Yerf!

    Kurze Problembeschreibung:

    Kurz aber heftig...

    • Ich habe auf der linken Seite mehrere Tabellenzellen, mit denen ich auf der rechten Seite Webseiten in einem Iframe aufrufen möchte.

    Hört sich a) nach Layouttabellen an, du könntest dir mal <http://de.selfhtml.org/css/layouts/index.htm@title=Layouten per CSS> anschauen. Das ist nicht nur moderner, sondern bietet auch viel mehr Möglichkeiten
    und b) nach Frames... die Probleme die Frames erzeugen lassen sich hier im Forumsarchiv zur genüge finden. Evtl. möchtest du dir mal Includes anschauen, das dürfte viele Probleme, auch deine aktuellen) lösen.

    • Die Text-Links innerhalb der Tabellenzellen sind nur Dummies, um ein Patschehändchen zu erzeugen.

    Benutzer ohne JavaScript scheinst du nicht zu mögen? Da gehören übrigens auch Suchmaschinen dazu... (willst wohl nicht gefunden werden?)
    Das "Patschehändchen" kann man auch per CSS erzeugen, besser wäre es jedoch im Sinne des Web für eine Verlinkung auch einen stinknormalen Link zu nehmen.

    • Die Option mittels rechter Maustaste den Link in einem neuen Fenster zu öffnen soll verhindert werden.

    Das kannst du nicht verhindern. Nicht zuverlässig. Notfalls lässt man sich eben den Frame einzeln in einem neuen Fenster öffnen. Damit behinderst du den Benutzer nur in seinem gewohnten Verhalten. Und wieso das ganze?

    Kurze Frage:
    Wie krieg ich diesen alten Spielverderber dazu, daß er mir mit der rechten Maustaste kein neues Fenster mehr öffnet?

    Auf den Iframe ganz verzichten, dann löst sich das Problem, dass der Inhalt alleine in einem neuen Fenster dargestellt werden kann ganz von alleine in Wohlgefallen auf.

    Gruß,

    Harlequin

    --
    <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
    1. Tachchen.
      Hab ich's doch geahnt, daß wieder einer kommt, um mich auf die drei Todsünden des Webdesign, also Tabellen, Frames und JavaScript, hinzuweisen.
      Iss doch alles längst gegessen, Chef.
      Soll ich deine Antwort jetzt als Workaround um meine Frage verstehen, oder wie?
      Gruß vom Doktor

      1. Yerf!

        Soll ich deine Antwort jetzt als Workaround um meine Frage verstehen, oder wie?

        Versteh sie wie du willst, sie enthält zumindest 2 Lösungen für dein Problem:

        Welche du jetzt nimmst bleibt dir überlassen, ich hab dir nur ein paar Punkte zum Überlegen mitgegeben...

        Gruß,

        Harlequin

        --
        <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
      2. Hi,

        Hab ich's doch geahnt, daß wieder einer kommt, um mich auf die drei Todsünden des Webdesign, also Tabellen, Frames und JavaScript, hinzuweisen.

        Na ja, wenn du sie heutzutage immer noch und sogar wissentlich begehst ...
        (Aber wenn jemand "des Haendchens wegen" Links benutzt, und von einer CSS-Eigenschaft cursor noch nie was gehoert hat, darf man wohl nichts anderes erwarten.)

        Iss doch alles längst gegessen, Chef.

        Voellerei ist uebrigens auch eine Todsuende.

        Soll ich deine Antwort jetzt als Workaround um meine Frage verstehen, oder wie?

        Vielleicht als Hinweis zum naechstes-Mal-besser-machen.

        MfG ChrisB

  3. Hallo,

    • Wenn ich als Referenzangabe "javascript:void();" verwende, reagieren die Browser unterschiedlich.
      Der Internet Explorer zeigt zwar das komplette Menue, erkennt aber anscheinend auch, daß nix zu holen ist und reagiert bei der Betätigung des entsprechenden Menue-Links erst gar nicht.

    das kann ich nicht bestätigen.

    Opera ist der einzige Browser, mit dem sich ein neues Fenster öffnen läßt mit dem Hinweis "javascript:void();" in der Adresszeile.

    Genau so reagieren IE5.x und IE6 auch. Mag sein, dass sich das Verhalten beim 7er geändert hat.

    So long,
     Martin

    --
    Letztlich basiert alles auf dem Feuer, dem Rad, der Eins und der Null.
      (Gernot Back)
  4. Hier der abgespeckte Quellcode:

    ... der keine Todsünden enthält, sondern so aussieht wie HTML Code vor 10 Jahren oft geschrieben wurde (ausser vielleicht dem iframe, wobei das bei dir lediglich ein Ersatz für normale Frames ist).
    D.h. du musst vermutlich Browser berücksichtigen die damals aktuell waren, wie Netscape 3/4 oder IE 4/5. Dann musst du aber aufpassen, Netscape 3 kennt kein iframe Element und CSS kann er auch nicht, ausserdem solltest du inline CSS vor diesem Browser mit HTML Kommentaren verstecken und Netscape kann nur bedingt CSS, aber dass du verschachtelte HTML Tabellen benutzt ist genau richtig, da der NC 4 grosse Probleme hatte Elemente mit CSS anzuordnen.

    Was mich aber wundert ist, wo solche Browser heutzutage noch vorkommen?

    Struppi.