Rolf: Dynamische Links?

Moin,

ich würde gern Links erzeugen, die nicht auf eine statische Adresse verweisen, sondern weitere Anweisungen "mitschicken". Es geht darum, daß ein Link eine neue Seite im Browser öffnen soll (" target="_blank") und dann jeweils drei Bilder öffnet. Für den ersten Link würde der Inhalt der Seite so aussehen:

<IMG src="https://www.example.de/Foto10**1**_1.jpg"><br>
<IMG src="https://www.example.de/Foto10**1**_2.jpg"><br>
<IMG src="https://www.example.de/Foto10**1**_3.jpg">

Für den zweiten Link müßte "Foto101" durch "Foto102" ersetzt werden, also:

<IMG src="https://www.example.de/Foto10**2**_1.jpg"><br>
<IMG src="https://www.example.de/Foto10**2**_2.jpg"><br>
<IMG src="https://www.example.de/Foto10**2**_3.jpg">

usw.

Das Aufrufen der Bilder funktioniert wunderbar, auch das Erzeugen der durchnumerierten IMG-Links ist dank Tabellenkalkulation kein Problem. Bis jetzt steht jede Gruppe von drei IMG-Links in einer separaten HTML-Datei, auf die ich auch erst wieder (zu Fuß) einen Link setzen muß. Was ich gern hätte, ist eine Automatisierung in der Form, daß ein Link ein neues (leeres) Fenster öffnet und gleich die drei zugehörigen IMG-Links aufruft, z.B.

Link 101 > Foto101_1, Foto101_2, Foto101_3

Link 102 > Foto102_1, Foto102_2, Foto102_3

usw.

Ich hoffe, ihr habt mein Problem verstanden. Ich brauche keine Hilfe beim Erzeugen der Links, das macht die Tabellenkalkulation, wenn ich erstmal weiß, wie einer dieser Links aussehen muß. Vielen Dank schon mal für eure Hilfe.

Rolf

  1. Hi there,

    ich würde gern Links erzeugen, die nicht auf eine statische Adresse verweisen, sondern weitere Anweisungen "mitschicken". Es geht darum, daß ein Link eine neue Seite im Browser öffnen soll (" target="_blank") und dann jeweils drei Bilder öffnet. Für den ersten Link würde der Inhalt der Seite so aussehen:

    Einmal abgesehen davon, daß automatisches Öffnen von Fnstern oder Seiten an sich keine gute Idee ist (so etwas läßt man idR besser den Anwender/Besucher entscheiden)

    <IMG src="https://www.example.de/Foto101_1.jpg"><br> <IMG src="https://www.example.de/Foto101_2.jpg"><br> <IMG src="https://www.example.de/Foto101_3.jpg">

    schreibst Du obige Zeilen einfach in ein HTML-Dokument, das Du zB. "fotos_1.html" nennst und das rufst Du dann mit <a href="fotos_1.html">Serie 1</a>" auf. Also, entweder Dein "Problem" ist so einfach oder ich hab's einfach falsch verstanden…

    1. Hallo klawischnigg,

      ich denke, genau das möchte er nicht. Das wäre die "triviale" Lösung: Eine HTML Datei pro Fototripel.

      Wenn man das nicht will, braucht man aktive Elemente. Entweder Javascript oder serverseitiges Script (z.B. PHP).

      Hat beides Vor- und Nachteile. Lieber Namensvetter - welche Kenntnisse hast Du und wie ist das technische Umfeld, in dem sich die Lösung bewegen soll?

      • Welche Sprachen beherrschst Du? (Javascript, PHP, andere Serversprachen)
      • Ist hier überhaupt ein Server im Spiel
      • Kannst Du dort PHP oder andere Sprachen laufen lassen?

      MUSS sich ein eigenes Fenster öffnen? Eine Alternative kann sein, dass der Link (dann besser ein Button) die Bilder auf der aktuellen Seite einblendet. Das geht per JavaScript oder auch per serverseitigem Script.

      Rolf

      --
      sumpsi - posui - clusi
      1. Hallo,

        ich denke, genau das möchte er nicht. Das wäre die "triviale" Lösung: Eine HTML Datei pro Fototripel.

        aber wie sonst, wenn er (so wie ich es verstehe) Popups mit je drei Bildern möchte?

        MUSS sich ein eigenes Fenster öffnen?

        Gute Frage. Normalerweise möchte man das vermeiden. Wenn es aber eine Anwendung sein soll, die der OP nur selbst nutzt, mag das eine Option sein.

        Ciao,
         Martin

        --
        Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
      2. Hi there,

        ich denke, genau das möchte er nicht. Das wäre die "triviale" Lösung: Eine HTML Datei pro Fototripel.

        Hat sich für mich anders angehört, aber egal, ich hab' ja eingeräumt, daß ich ihn möglicherweise mißverstanden habe...

  2. Lieber Rolf,

    daß ein Link eine neue Seite im Browser öffnen soll

    und wie ist das für Smartphone-Anwender? Glaubst Du, dass die mit diesem neuen Fenster gut zurecht kommen werden? Mit allen drei Bildern auf einmal?

    Es hat einen Sinn, solche Popups nicht zu verwenden, oder sie innerhalb der Seite über einen JavaScript-Mechanismus anzubieten. Auf einem Smartphone ist wahrscheinlich der blanke Link auf das nackte Bild genug, dass man das wie in einem Popup zu sehen bekommt - nämlich seitenfüllend. Aber solche Lösungen wie die von mir verlinkte dürfen sich dann um all diese nervtötenden Feinheiten kümmern, wie das auf welchem Endgerät mit welchen Anzeigeabmessungen (viewport) wie verhält (hoffentlich sinnvoll). Für Dich als Autor bleibt das nackte HTML zu erstellen.

    Liebe Grüße

    Felix Riesterer

  3. @@Rolf

    Es geht darum, daß ein Link eine neue Seite im Browser öffnen soll (" target="_blank")

    Oh je, wirklich? Link Targets and 3.2.5

    Für den ersten Link würde der Inhalt der Seite so aussehen:

    <IMG src="https://www.example.de/Foto10**1**_1.jpg"><br>
    <IMG src="https://www.example.de/Foto10**1**_2.jpg"><br>
    <IMG src="https://www.example.de/Foto10**1**_3.jpg">
    

    Die Alternativtexte fehlen. (Und auch wenn es keine Alternativtexte geben sollte, sollte das alt-Attribut vorhanden sein.)

    Statt br solltest du besser CSS einsetzen, bspw. img {display: block}.


    Du möchtest wahrscheinlich etwas Generisches, wo du die Gruppe der jeweils gewünschten Fotos als Parameter übergibst.

    Der URL sieht dann bspw. so aus: https://www.example.de/foto?image=Foto101.

    Hinter foto verbirgt sich ein serverseitiges Script (PHP, SSI, …), welches das Markup generiert:

    <img src="https://www.example.de/<?= htmlspecialchars($_GET['image']) ?>_1.jpg" alt="">
    <img src="https://www.example.de/<?= htmlspecialchars($_GET['image']) ?>_2.jpg" alt="">
    <img src="https://www.example.de/<?= htmlspecialchars($_GET['image']) ?>_3.jpg" alt="">
    

    LLAP 🖖

    --
    Wenn der Faschismus wiederkommt, wird er nicht sagen: Hallo, ich bin der Faschismus! Sondern er wird sagen: Ich nehme die Wahl an.
    1. Hallo Gunnar,

      Link Targets and 3.2.5

      ich habe mehrfach angesetzt mit dem Versuch, diesem Text zu folgen. Vergeblich. Der Autor ist so tief in seinem Jargon drin, dass er mich nach zwei Sätzen abhängt. Offenbar gehöre ich nicht zu seiner Zielgruppe. Oder er schwafelt und versteckt das hinter einem Orkan aus Buzzwords und Abkürzungen.

      Rolf

      --
      sumpsi - posui - clusi
      1. Hallo Rolf,

        wo genau hängt der Autor von dem Text dich ab? Sprich welche Abkürzungen, Begriffe, Formulierungen etc. sind für dich - und möglicherweise andere Leute - unverständlich sind?

        Viele Grüße

        Jens

      2. @Rolf B

        es ist hier wirklich schwierig ein Problem nachzustellen wenn man gar nicht weiß was das Problem ist.

        Links erzeugen kann er dank seines Kalkulationsprogramm's. Grafiken downloaden kann er auch. Umgang mit dem QUERY_STRING ist für ihn auch kein Problem.

        MFG

  4. Moin,

    hier ist ja schon einiges los, leider nichts dabei, was mir weiterhilft. Scheinbar muß ich noch einiges klarstellen:

    Die eigene HTML-Datei für jede einzelne Bildergruppe gibt es jetzt schon, das ist gerade das, wovon ich weg will. Das sind nicht nur 5 Stück, sondern diesen Monat 591, nächsten Monat wieder ein paar 100 usw. Irrer Aufwand, diese Dateien zu erstellen und zu verlinken.

    Das Öffnen im neuen Fenster ist ausdrücklich erwünscht, die Darstellung erfolgt ausschließlich auf großen Computermonitoren (ist nur für internen Gebrauch). Wenn es eine technisch einfachere Lösung gäbe, die die Bilder nach einem Klick auf den Link im SELBEN Fenster öffnet, könnte ich auch damit klarkommen (ungern).

    Es ist übrigens auch KEINE Option, einfach alle IMG-Links in die HTML-Datei einzufügen, aus der heraus sie aufgerufen werden sollen, das würde mir, um beim Beispiel dieses Monats zu bleiben, 3 x 591 Bilder auf den Monitor zaubern. Ich möchte an dieser Stelle nur die Links haben, zusammen mit noch 5 x 591 anderen (unproblematischen) Links, die in einer Tabelle schön angeordnet sind.

    Ich beherrsche KEINE Programmiersprache, auch in HTML habe ich nur rudimentäre Kenntnisse.

    Es ist KEIN Server im Spiel. OK, es gibt wohl einen Server da, wo die Bilder liegen. Da kann ich aber nicht weiter drauf zugreifen, einfach nur die Bilder abrufen.

    Alternativtexte sind hier mal nicht nötig, weil man die IMG-Links gar nicht erst zu sehen bekommt, nach dem Öffnen der Seite erscheinen ja sofort die Bilder. Und laßt mich einfach <br> verwenden, das reicht für die Anwendung völlig aus, die Links sind über das Internet gar nicht erreichbar.

    Den Vorschlag von Gunnar mit dem serverseitigen Script hab' ich nicht verstanden, aber wahrscheinlich macht das nichts, weil es mangels Server ohnehin nicht umsetzbar ist.

    Ich versuche nochmal deutlich zu machen, was ich eigentlich will: die IMG-Links sollen nicht im Inhalt der HTML-Datei stehen, sondern vom Link übergeben werden, also in der Adreßzeile des Browsers. So wie jeder andere Link, der (optional eine neue) Seite öffnet, soll dieser das auch tun, nur daß er nebenbei noch die Information mitschickt, welche drei Bilder geladen werden sollen.

    Rolf

    1. @@Rolf

      Ich beherrsche KEINE Programmiersprache, auch in HTML habe ich nur rudimentäre Kenntnisse.

      Angesichts dessen glaube ich das nicht:

      Es ist KEIN Server im Spiel.

      Wie rufst du denn die HTML-Dateien für jede einzelne Bildergruppe auf, wenn nicht über einen Server? Übers lokale Dateisystem?

      Den Vorschlag von Gunnar mit dem serverseitigen Script hab' ich nicht verstanden, aber wahrscheinlich macht das nichts, weil es mangels Server ohnehin nicht umsetzbar ist.

      Mangels Server oder mangels Kenntnissen?

      Du kannst das aber auch per clientseitigem Script machen:

      const imagePrefix = (new URL(document.location)).searchParams.get('image');
      

      liefert den GET-Parameter image aus dem URL der aktuellen Seite.

      const imagePrefixEncoded = encodeURIComponent(imagePrefix);
      

      behandelt ihn zum Einfügen in einen URL.

      const fragment = new DocumentFragment();
      
      for (let i = 1; i <= 3; i++) {
        const imageElement = document.createElement('img');
        imageElement.src = `https://example.net/${imagePrefixEncoded}_${index}.jpg`;
        imageElement.alt = '';
        
        fragment.appendChild(imageElement);
      }
      

      erstellt in einer Schleife die drei img-Elemente und weist ihnen src- und alt-Attribute zu. Diese werden in einem Fragment gesammelt, welches du am Ende nur noch an die gewünschte Stelle im DOM hängen musst, bspw:

      document.body.appendChild(fragment);
      

      LLAP 🖖

      --
      Wenn der Faschismus wiederkommt, wird er nicht sagen: Hallo, ich bin der Faschismus! Sondern er wird sagen: Ich nehme die Wahl an.
      1. Hallo Gunnar,

        Du nimmst mir einen Teil meiner Fragen von den Fingern.

        Wie rufst du denn die HTML-Dateien für jede einzelne Bildergruppe auf, wenn nicht über einen Server? Übers lokale Dateisystem

        Mich als alten AB-Problemsucher würde mal der ganze Workflow interessieren. Wo befindet sich der Link? Wer erstellt den Link und wie? Ist das Aufrufen einer HTML Seite mit Bildnamen als Parameter der einzig sinnvolle und gangbare Weg?

        Rolf

        --
        sumpsi - posui - clusi
    2. Da kann ich aber nicht weiter drauf zugreifen, einfach nur die Bilder abrufen.

      Also haben die Bilder ja Dir bekannte URLs sonst könntest die ja nicht abrufen. So dürfte es kein Problem sein, diese Dir bekannten URLs in eine Datei zu schreiben.

      Was soll dabei automatisiert werden, das Schreiben dieser Bild'URLs in eine Datei oder das draufklicken aufn URL?

      MFG

  5. Moin,

    ich hab' mal weitergesucht. Das mit dem "clientseitigen Script" war schon wieder "zu hoch" für mich, aber die Suche danach hat mit auf Umwegen auf den Begriff "Query String" gebracht, und das ist genau das, was ich suche. Ich kriege ihn aber nicht richtig zusammengebastelt, vielleicht hat einer von Euch die zündende Idee?

    Zum besseren Verständnis zeige ich Euch erstmal, was ich bisher mache. Wie bereits erwähnt, habe ich eine HTML-Datei mit vielen Links, von denen die meisten direkt ins Internet verweisen. In einer Spalte stehen bis jetzt Links, die lokal auf meinem Rechner gespeicherte HTML-Dateien aufrufen. Eine davon heißt z.B. "STZ.htm". Der Inhalt dieser Datei ist folgender:

    <IMG src="https://finviz.com/chart.ashx?t=STZ&ty=c&ta=0&p=d&s=l" border="2"><br><br>
    <IMG src="https://finviz.com/chart.ashx?t=STZ&ty=c&ta=0&p=w&s=l" border="2"><br><br>
    <IMG src="https://finviz.com/chart.ashx?t=STZ&ty=c&ta=0&p=m&s=l" border="2">
    

    Ihr könnt Euch sicher denken, was passiert, wenn ich den Link anklicke, das Ergebnis sieht so aus:

    Screenshot

    Jetzt hätte ich gern, daß ich nicht erst jeden Monat hunderte HTML-Dateien und Links erstellen muß, sondern dieses Ergebnis direkt mit einem Link abfragen kann, ohne den Umweg über eine lokale Datei. Mit dem "Query String" gelingt mir das jeweils nur für EINES der drei Bilder, ich möchte sie aber gleichzeitig und möglichst in EINEM Browserfenster sehen.

    Diese "Query Strings" funktionieren - jeder für sich:

    https://finviz.com/chart.ashx?t=STZ&p=d

    https://finviz.com/chart.ashx?t=STZ&p=w

    https://finviz.com/chart.ashx?t=STZ&p=m

    Es gelingt mir nur nicht, die so zu verknüpfen, daß alle drei Bilder abgerufen werden, wie oben im Bild gezeigt. Ich schreibe z.B. in die Adreßzeile:

    https://finviz.com/chart.ashx?t=STZ&amp;p=d&t=STZ&amp&p=w&t=STZ&amp;p=m

    und bekomme NUR EINES der drei Bilder angezeigt. Mache ich was falsch oder geht das tatsächlich nicht?

    Rolf

    1. Hi there,

      Es gelingt mir nur nicht, die so zu verknüpfen, daß alle drei Bilder abgerufen werden, wie oben im Bild gezeigt. Ich schreibe z.B. in die Adreßzeile:

      https://finviz.com/chart.ashx?t=STZ&amp;p=d&t=STZ&amp&p=w&t=STZ&amp;p=m

      und bekomme NUR EINES der drei Bilder angezeigt. Mache ich was falsch oder geht das tatsächlich nicht?

      Also, erstens machst Du falsch, daß Du t=STZ mehrmals angibst. Das wäre aber nicht tragisch, es ist nur überflüssig. Richtig falsch ist aber, daß die Variable p, die Du übergibst, nicht verschiedene Werte haben kann, und so interpretiert das Skript, das sich in der Datei chart.ashx befindet immer nur den letzten Wert, also in dem Fall p=m. Richtig wäre also

      https://finviz.com/chart.ashx?t=STZ&amp;p1=d&amp;p2=w&amp;p3=m

      ABER - (jetzt kommt leider das große "aber") vermutlich weiß das Skript in der Datei chart.ashx nichts davon, daß es den Querystring nach Parametern abfragen soll, die p1, p2 und p3 heissen. Das wäre zwar leicht anzupassen, aber dazu müsstest Du erstens Zugang zu diesem Skript haben und zweitens jemanden, der sich mit ASP.net soweit auskennt (das ist absolut keine Hexerei, aber Du hast ja selbst eingeräumt, daß Du Dich auf dem Gebiet nicht auskennst). So wie ich das sehe, verwendest Du da ein fertiges Skript, daß eben ein einziges Bild als Parameter p erwartet und das kannst Du nicht ändern, indem Du einfach mehrere oder anderer Parameter mitschickst.

      Es tut mir leid, daß ich Dir da nicht helfen kann, aber wenigstens wissen wir jetzt, wo Dein Problem liegt...

    2. Hallo Rolf,

      ich hab' mal weitergesucht. Das mit dem "clientseitigen Script" war schon wieder "zu hoch" für mich, ...

      okay, das lässt darauf schließen, dass wir deine Kenntnisse tatsächlich auf Laien-Niveau einschätzen müssen. Nein, das ist kein Vorwurf, keine Geringschätzung - du hast dafür ganz bestimmt andere Stärken. Kann ja nicht jeder ein IT-Genie sein.

      aber die Suche danach hat mit auf Umwegen auf den Begriff "Query String" gebracht, und das ist genau das, was ich suche. Ich kriege ihn aber nicht richtig zusammengebastelt, vielleicht hat einer von Euch die zündende Idee?

      Wenn ich deine nachfolgenden Ausführungen zusammenfassen darf: Nein, was du dir vorstellst, geht so nicht.

      
      > <IMG src="https://finviz.com/chart.ashx?t=STZ&ty=c&ta=0&p=d&s=l" border="2"><br><br>
      > <IMG src="https://finviz.com/chart.ashx?t=STZ&ty=c&ta=0&p=w&s=l" border="2"><br><br>
      > <IMG src="https://finviz.com/chart.ashx?t=STZ&ty=c&ta=0&p=m&s=l" border="2">
      
      

      Eins vorweg: Das ist grausames HTML. Die vorgeschriebenen alt-Attribute für die img-Elemente fehlen, doppelt auftretende br-Elemente sind ein klares Indiz für Verständnisfehler, und Tag-Namen schreibt man üblicherweise in Kleinbuchstaben.

      Jetzt hätte ich gern, daß ich nicht erst jeden Monat hunderte HTML-Dateien und Links erstellen muß, sondern dieses Ergebnis direkt mit einem Link abfragen kann, ohne den Umweg über eine lokale Datei.

      Das wird nicht gehen.

      Diese "Query Strings" funktionieren - jeder für sich:

      https://finviz.com/chart.ashx?t=STZ&p=d

      https://finviz.com/chart.ashx?t=STZ&p=w

      https://finviz.com/chart.ashx?t=STZ&p=m

      Ja, so weit kann ich folgen.

      Es gelingt mir nur nicht, die so zu verknüpfen, daß alle drei Bilder abgerufen werden, wie oben im Bild gezeigt. Ich schreibe z.B. in die Adreßzeile:

      https://finviz.com/chart.ashx?t=STZ&amp;p=d&t=STZ&amp&p=w&t=STZ&amp;p=m

      und bekomme NUR EINES der drei Bilder angezeigt.

      Ja. Das Script, das du auf diese Weise aufrufst, kann nur ein Bild liefern. Es wird daher von mehreren gleichnamigen Parametern nur einen annehmen, vermutlich den letzten.

      Mache ich was falsch oder geht das tatsächlich nicht?

      Bei HTTP gilt die Grundregel: Ein Request, eine Response. Du willst drei Responses, also musst du auch drei Requests senden. Wie du das zum Beispiel mit Javascript automatisieren kannst, wurde dir schon gezeigt. Wenn du es ausprobieren willst und dabei noch etwas Hilfe brauchst, bist du hier herzlich willkommen. Es ist wirklich kein Hexenwerk.
      Nur so wie du es gern hättest, also drei Bilder mit einer einzigen Anfrage an den Server, geht es eben nicht.

      Ciao,
       Martin

      PS: Wie alt bist du, wenn ich fragen darf? Wörter wie dass, muss oder Adresszeile schreibt man schon seit rund 25 Jahren mit Doppel-s. Das war eine der wenigen Regeln der Rechtschreibdeform, die ich sofort begeistert angenommen habe.

      --
      Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
      1. Moin

        okay, das lässt darauf schließen, dass wir deine Kenntnisse tatsächlich auf Laien-Niveau einschätzen müssen. Nein, das ist kein Vorwurf, keine Geringschätzung - du hast dafür ganz bestimmt andere Stärken.

        Ja, ich kann z.B. gut im Internet recherchieren und die eine Seite finden, wo ich wahrscheinlich eine qualifizierte Antwort bekomme 😀

        Eins vorweg: Das ist grausames HTML.

        Kann sein, aber ich bin da eben kein Experte - und es funktioniert ja so, wie ich es brauche, ist nur für den Eigenbedarf.

        Das wird nicht gehen.

        Schade, da hab' ich die Möglichkeiten wohl überschätzt.

        Wie du das zum Beispiel mit Javascript automatisieren kannst, wurde dir schon gezeigt. Wenn du es ausprobieren willst und dabei noch etwas Hilfe brauchst, bist du hier herzlich willkommen. Es ist wirklich kein Hexenwerk.

        Was der Gunnar oben gezeigt hat, kann ich leider nicht nachvollziehen. Ich wüßte nicht mal, wo dieser Code hingehört. Meinst Du, es gibt eine Möglichkeit mit Javascript, die einfacher ist als mein bisheriger Workflow?

        PS: Wie alt bist du, wenn ich fragen darf? Wörter wie dass, muss oder Adresszeile schreibt man schon seit rund 25 Jahren mit Doppel-s.

        Ich bin 63 und schreibe immer noch so, wie ich es in den 1960er Jahren gelernt habe.

        Das war eine der wenigen Regeln der Rechtschreibdeform, die ich sofort begeistert angenommen habe.

        Ich war von keiner der neuen Regeln begeistert und habe dann auch keine angenommen.

        Rolf

        1. hi

          drück mal F12 (Firefox) und guck mal im Netzwerktab ob die 3 Requests auch wirklich rausgehen.

          MFG

          1. hi

            drück mal F12 (Firefox) und guck mal im Netzwerktab ob die 3 Requests auch wirklich rausgehen.

            Ergänzung: Im Netzwerktab ist auch zu sehen, welchen HTTP-Status eine jede Response hat. Einen HTTP'Status gibt es auf jeden Fall dazu ist der Webserver verpflichtet, auch dann wenn er kein Image liefert.

            Aufgehts!

      2. Bei HTTP gilt die Grundregel: Ein Request, eine Response. Du willst drei Responses, also musst du auch drei Requests senden.

        Genau das macht der doch der Browser, 3 <img>-Elemente heißt, daß 3 Requests rausgehen. Das ist in der Console (F12) zu sehen.

        MFG

    3. Moin,

      Es gelingt mir nur nicht, die so zu verknüpfen, daß alle drei Bilder abgerufen werden, wie oben im Bild gezeigt. Ich schreibe z.B. in die Adreßzeile:

      https://finviz.com/chart.ashx?t=STZ&amp;p=d&t=STZ&amp&p=w&t=STZ&amp;p=m

      und bekomme NUR EINES der drei Bilder angezeigt. Mache ich was falsch oder geht das tatsächlich nicht?

      Wenn der URL samt QUERY_STRING in der Adreßzeile funktioniert, hast Du den ja schonmal richtig geschrieben. Genauso muß der URL bzw. alle weiteren URL's im src= Attribut des <img>-ELments notiert werden.

      MFG

    4. @@Rolf

      Wie bereits erwähnt, habe ich eine HTML-Datei mit vielen Links

      Die heißt bspw. index.html.

      Wie rufst du diese Datei auf? Doppelclick – und dann steht sowas wie
      file:///…/index.html in der Adresszeile des Browsers?

      In einer Spalte stehen bis jetzt Links, die lokal auf meinem Rechner gespeicherte HTML-Dateien aufrufen. Eine davon heißt z.B. "STZ.htm".

      Und eine andere bspw. ABC.htm? (Warum nicht ….html?)

      Diese willst du dir jetzt sparen und beim Click auf „ABC“ sollen die Bilder https://finviz.com/chart.ashx?t=ABC&p=d, …p=w und …p=m angezeigt werden.

      (An anderer Stelle haben die Bilder bei dir noch die Parameter ty=c, ta=0 und s=l. Wozu sind die gut?)

      Das lässt sich mit JavaScript umsetzen: Die Standardaktion der Links „ABC“, „STZ“, … (Verweis auf andere Seiten) abfangen und stattdessen den Seiteninhalt gegen die 3 Bilder austauschen. Oder besser: die 3 Bilder in einem modalen Dialogfenster anzeigen, damit die Übersichtsseite erhalten bleibt?

      Bleibt noch die Frage, wie du die Linkliste pflegen willst. Du schriebst ja, dass da immer wieder welche dazukommen. Erweiterst du dann immer die Datei (index.html)?

      Oder ist statt die Linkliste zu pflegen ein Eingabefeld sinnvoller, wo du ABC oder STZ usw. eingibst und dann die jeweiligen Bilder angezeigt werden?

      LLAP 🖖

      --
      Wenn der Faschismus wiederkommt, wird er nicht sagen: Hallo, ich bin der Faschismus! Sondern er wird sagen: Ich nehme die Wahl an.
      1. @Gunnar Bittersmann

        (An anderer Stelle haben die Bilder bei dir noch die Parameter ty=c, ta=0 und s=l. Wozu sind die gut?)

        Parameter, das ist ein Begriff aus der Welt des HTTP. Ein HTTP'Request kann Parameter enthalten. Und so wie hier beschrieben, wird infolge eines oder mehrerer Parameter bestimmt, welches Bild der Server ausliefern soll.

        Also keine lokale Sache sondern Client'Server.

        MFG

        1. Hallo,

          Parameter, das ist ein Begriff aus der Welt des HTTP.

          und aus der Welt der Mathematik, Physik, Technik, Analysis, Geometrie, Statistik, Entwurfstechnik, Programmierung, Chemie, Musik, Linguistik, …

          Hat schon jemand Bingo?

          Gruß
          Kalk

        2. @@pl

          Parameter, das ist ein Begriff aus der Welt des HTTP.

          Du musst hier nicht den Begriff Parameter erklären.

          Es ging hier darum, dass im OP einmal URIs mit Parametern ty=c, ta=0 und s=l angegeben sind und andermal URIs ohne diese Parameter. (Die Bilder kommen auch ohne.)

          Du hast aber nicht nur dieses Detail nicht verstanden, sondern auch das eigentliche Problem nicht.

          LLAP 🖖

          --
          Wenn der Faschismus wiederkommt, wird er nicht sagen: Hallo, ich bin der Faschismus! Sondern er wird sagen: Ich nehme die Wahl an.
          1. @Gunnar Bittersmann

            Es ging hier darum, dass im OP einmal URIs mit Parametern ty=c, ta=0 und s=l angegeben sind und andermal URIs ohne diese Parameter. (Die Bilder kommen auch ohne.)

            Nein, Ohne Parameter kommt das da

            HTTP/1.1 200 OK
            Cache-Control: private
            Content-Type: text/html; charset=utf-8
            Server: Microsoft-IIS/8.5
            X-AspNet-Version: 4.0.30319
            Set-Cookie: preventRedirectLoop=false; domain=.finviz.com; expires=Sun, 16-Feb-2020 09:11:22 GMT; path=/
            X-Powered-By: ASP.NET
            Date: Mon, 17 Feb 2020 09:11:22 GMT
            Connection: close
            Content-Length: 305
            
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
            <html>
            <head>
            <title>FINVIZ - Error</title>
            </head>
            <body>
            <img src="/gfx/top_gfx_logo_2.gif" width="222" height="21" alt="" hspace="0" vspace="0" border="0">
            <h2>error: invalid query</h2>
            <a href="/">return to FINVIZ.com</a>
            </body>
            </html>
            
            Prozess erfolgreich beendet.
            

            Also kein Bild.

            MFG

            1. @@pl

              Es ging hier darum, dass im OP einmal URIs mit Parametern ty=c, ta=0 und s=l angegeben sind und andermal URIs ohne diese Parameter. (Die Bilder kommen auch ohne.)

              Nein, Ohne Parameter kommt das da

              Ich sagte nicht „ohne Parameter“, sondern „ohne diese Parameter“ – ohne ty=c, ta=0 und s=l.

              Aber natürlich mit Parametern t (bspw. t=ABC) und p (bspw. p=d).

              LLAP 🖖

              --
              Wenn der Faschismus wiederkommt, wird er nicht sagen: Hallo, ich bin der Faschismus! Sondern er wird sagen: Ich nehme die Wahl an.
      2. Hallo Gunnar,

        ty ist der Typ-Parameter. Sieht man auf der finwiz Seite, c ist Candlestick. Mit ta=1 statt ta=0 schaltet man eine Trendanalyse zu. Auf der finviz Seite bekommt man ty=c&ta=1 für Typ=advanced und ty=c&ta=0 für Typ=candle

        Was der s-Parameter macht, finde ich nicht. Die HTML Seite hat den nicht, das ist wohl was internes.

        Rolf

        --
        sumpsi - posui - clusi
    5. Hallo Rolf,

      ok, du sammelst also Börsencharts. Die Frage, ob diese Form von Deeplinking zulässig ist, werde ich ignorieren, die ist nur für Dich wichtig.

      Interessant zu wissen wäre, ob all deine kleinen HTML Dateien finviz-Charts nutzen und sich die abgerufenen Images in all diesen tausenden Dateien letztlich nur in den Aufrufparametern p=d, p=w und p=m unterscheiden.

      Oder - wenn es nicht nur finviz ist - ob es dann zumindest eine gewisse Gruppierung gibt, also zum Beispiel eine gewisse, überschaubare Grundmenge von Anbietern, deren Charts du darstellst.

      Update: Ich sehe gerade dass finviz lange nicht gleich finviz ist - außer der charts.ashx gibt's auch noch einige andere.

      Warum ist das interessant? Das übergeben eines vollständigen Links per URL-Parameter ist möglich, aber mühsam. Man müsste dafür ein kleines Tool bauen, in Form einer HTML Seite mit JavaScript darin, das die korrekte Codierung übernimmt (was natürlich möglich ist). Das Ausfüllen eines solchen Forms ist beinahe genauso lästig wie das Erstellen der Detail-HTML Seiten. Hier wäre ein Beispiel für eine solche Eingabemaske.

      Wenn Du dagegen nur wenige Grundtypen hast, könnte man die Eingaben für die Link-Generierung auf die Unterschiede beschränken, das ist wesentlich übersichtlicher und schneller erstellt. Man könnte die Generierseite dann so schreiben, dass man den Quellentyp über ein Dropdown oder Radiobuttons auswählt (bzw. man braucht gar nichts auswählen wenn es immer finviz ist). Den Rest erledigt das Script. Der Link selbst sollte immer die vollen URLs enthalten, dadurch bleibt die Anzeigeseite unabhängig von allem.

      Allerdings bist Du dann auf einen Programmierer angewiesen, wenn neue Typen hinzukommen. Wenn Du das nicht sein willst, musst Du ein gewisses Verständnis für das Script entwickeln, oder die URLs immer vollständig codieren.

      Rolf

      --
      sumpsi - posui - clusi
      1. @Rolf B

        vermutlich erwartert er, daß unter

        chart.ashx?t=STZ&ty=c&ta=0&p=d&s=l

        bei jedem Request ein anderes Chart kommt weil sich serverseitig die Daten laufend ändern.

        Also drei <img>-Tags mit demselben URL auch drei verschiedene Charts liefern weil die Daten so dynamisch sind.

        MFG

        1. Hallo pl,

          hiermit verleihe ich Dir den Titel Captain Obvious des Tages.
          Würdest du jetzt bitte aufhören, den Thread zu verrauschen?

          Herzlichen Glückwunsch!
          Rolf

          --
          sumpsi - posui - clusi
  6. Moin,

    erstmal ein paar Antworten auf die letzten Posts, ganz unten dann eine neue Idee ...

    drück mal F12 (Firefox) und guck mal im Netzwerktab ob die 3 Requests auch wirklich rausgehen.

    Ich denke, Du meinst das hier:

    Bildschirmfoto

    Wenn ich das richtig sehe, geht der Request so raus wie er ist, was ich zurückbekommen habe, ist aber nicht der erste und auch nicht der letzte (was vielleicht noch logisch erklärbar wäre), sondern komischerweise der ZWEITE.

    Wenn der URL samt QUERY_STRING in der Adreßzeile funktioniert, hast Du den ja schonmal richtig geschrieben.

    Er funktioniert ja nicht so, wie ich will, der Query String für ein einzelnes Bild ist zweifellos richtig, aber ich habe keine Ahnung, auf welche Art weitere Parameter angehängt werden können. Ich habe auch andere Trennzeichen versucht und teilweise darauf nicht mal EIN Bild zurückbekommen, sondern nur eine Fehlermeldung.

    Wie rufst du diese Datei auf? Doppelclick – und dann steht sowas wie

    file:///…/index.html in der Adresszeile des Browsers?

    Ja, die Datei heißt "Klicktabelle.htm" und nach dem Doppelklick darauf steht in der Adreßzeile:

    file:///home/user/Schreibtisch/Klicktabelle.htm

    Und eine andere bspw. ABC.htm? (Warum nicht ….html?)

    Ja, genau. Weil ich gar nicht weiß, ob es einen Unterschied macht. Ich habe gesehen, daß solche Dateien mal *.htm und mal *.html heißen, der Browser "frißt" beide gleichermaßen.

    Diese willst du dir jetzt sparen und beim Click auf „ABC“ sollen die Bilder https://finviz.com/chart.ashx?t=ABC&p=d, …p=w und …p=m angezeigt werden.

    Ja, so war's geplant.

    (An anderer Stelle haben die Bilder bei dir noch die Parameter ty=c, ta=0 und s=l. Wozu sind die gut?)

    Hatte ich mich nicht mit beschäftigt, ich bekomme mit und ohne diese Parameter das gleiche Ergebnis, also lasse ich sie weg. Sind wohl dazu da, den Chart anders zu formatieren.

    Oder besser: die 3 Bilder in einem modalen Dialogfenster anzeigen, damit die Übersichtsseite erhalten bleibt?

    modalen Dialogfenster? Gut, daß Google nicht weit ist! Aber ich habe nicht den kleinsten Schimmer, wie das umzusetzen wäre. Und ja, die "Übersichtsseite", also bei mir die"Klicktabelle" soll - wenn irgendwie möglich - offen bleiben, schon allein, damit ich die Möglichkeit habe, noch einen weiteren Link anzuklicken.

    Bleibt noch die Frage, wie du die Linkliste pflegen willst. Du schriebst ja, dass da immer wieder welche dazukommen. Erweiterst du dann immer die Datei (index.html)?

    Es wird besser sein, jeden Monat eine neue anzulegen, denn sonst gibt's irgendwann Probleme mit den alten Daten, die noch in der Tabelle stehen, aber nicht mehr aktuell sind.

    Oder ist statt die Linkliste zu pflegen ein Eingabefeld sinnvoller, wo du ABC oder STZ usw. eingibst und dann die jeweiligen Bilder angezeigt werden?

    Nein, ich brauche ja nicht nur die Links zu finviz, sondern auch zu fünf anderen Seiten. Großartig "pflegen" muß ich die Liste nicht, das letzte Kopieren von 591 Datensätzen hat ca. 15 Minuten gedauert, so lange auch nur, weil die auf 30 Seiten verteilt waren. Den Rest macht die Tabellenkalkulation allein - schneller, als ich gucken kann. Dann kopiere ich noch die Ergebnisspalte in eine HTML-Tabelle.

    ok, du sammelst also Börsencharts. Die Frage, ob diese Form von Deeplinking zulässig ist, werde ich ignorieren, die ist nur für Dich wichtig.

    Ich sag' mal so: das Deeplinking ist vom Seitenbetreiber wohl so nicht vorgesehen, er verhindert es aber (bis jetzt) auch nicht. Illegal ist das ja wohl nicht, ich stelle die Links nicht öffentlich zur Verfügung, sondern nutze sie nur selbst. Der Seitenbetreiber wird besseres zu tun haben, als die zigtausenden Anfragen, die er sicherlich jeden Tag bekommt, auf sowas zu durchsuchen, ich geh' einfach mal davon aus, daß er nicht auf die Idee kommt, und wenn, ist noch nicht raus, ob ihn das stört, immerhin spart das auch auf seiner Seite Traffic, wenn ich nicht die vollständigen Seiten lade. Werbung läuft da auch nicht. Ihr werdet mich doch wohl nicht verpfeifen?

    Interessant zu wissen wäre, ob all deine kleinen HTML Dateien finviz-Charts nutzen und sich die abgerufenen Images in all diesen tausenden Dateien letztlich nur in den Aufrufparametern p=d, p=w und p=m unterscheiden.

    Ich muß zugeben, daß ich bisher keine tausenden Dateien erstellt habe, sondern bis vor Kurzem Charts eines anderen Anbieters genutzt habe. Der läßt sich zwar problemlos mit einem automatisch erzeugten Link aufrufen, bietet aber nicht so schöne Charts wie finviz. Vor allem hätte ich gern die Möglichkeit, die Charts der drei Zeitebenen gleichzeitig zu sehen. Der Unterschied ist ausschließlich im Tickersymbol (STZ, ABC ...), die Parameter sind immer gleich.

    Warum ist das interessant? Das übergeben eines vollständigen Links per URL-Parameter ist möglich, aber mühsam. Man müsste dafür ein kleines Tool bauen, in Form einer HTML Seite mit JavaScript darin, das die korrekte Codierung übernimmt (was natürlich möglich ist). Das Ausfüllen eines solchen Forms ist beinahe genauso lästig wie das Erstellen der Detail-HTML Seiten. Hier wäre ein Beispiel für eine solche Eingabemaske.

    Das sieht mir noch "lästiger" aus als das bisherige Vorgehen.

    vermutlich erwartert er, daß unter

    chart.ashx?t=STZ&ty=c&ta=0&p=d&s=l

    bei jedem Request ein anderes Chart kommt weil sich serverseitig die Daten laufend ändern.

    Ich erwarte das nicht nur, das ist tatsächlich so. Es ist jetzt aber nicht so, daß ich dauernd den Refreshbutton klicke, erstens sind die Charts sowieso nicht realtime, zweitens spielt es für mich keine Rolle, ob und wieviel Minuten sie verzögert angezeigt werden. Ich brauche den ganzen Workflow, um interessante Kandidaten auszufiltern, einige gucke ich EINMAL an und dann für Monate gar nicht mehr, bis sie wieder in der Liste auftauchen. Andere (wenige) werden in den folgenden Wochen noch ein paar mal aufgerufen, max. einmal am Tag.

    So, jetzt ist mir noch was anderes eingefallen, wie das Problem zu lösen wäre: Ich kann ja jeden der drei Charts einzeln über einen automatisch erzeugten Link aufrufen, wie weiter oben schon gezeigt, auch in einem neuen Fenster. Dabei hat die Anweisung target="_blank" nur für meinen Browser was zu bedeuten, sie wird nicht mitgesendet, obwohl sie in der Adreßzeile steht. Das bringt mich auf folgende Idee: Kann ich dem Browser auf diese Art auch sagen, wie groß das neu zu öffnende Fenster sein soll und vielleicht auch noch, an welcher Stelle es auf dem Monitor erscheinen soll? Dann muß ich zwar drei Links anklicken statt nur einen (kann ich mit leben 😀), geht aber ganz ohne Programmieraufwand und füht zum (fast) gleichen Ergebnis wie ursprünglich gewünscht. So würde das aussehen:

    Bildschirmfoto

    Also jeder Chart im eigenen Fenster. (Wenn sich jemand über seltsam ausssehende Fenster wundern sollte - mein Betriebssystem ist ubuntu, aber vielleicht habt ihr das auch längst gemerkt.) Wenn gar nichts anderes geht, müßte ich die Fenster eben jedesmal "zu Fuß" auf die richtige Größe bringen und untereinander anordnen, ich hoffe, das kann auch der Browser (Firefox) machen?

    Rolf

    1. Hallo Rolf,

      Fensterpositionen festlegen braucht JavaScript (Stichwort window.open-Funktion), aber die Browser mögen das nicht mehr sonderlich, weil die Werbefuzzis damit Schindluder treiben.

      Was Du scheinbar bisher versucht hast, war, vom der Bildquelle die drei Bilder auf einmal zu erhalten. DAS wird nicht funktionieren. Dafür brauchst Du eine Adapterseite, nach dem von Gunnar vorgeschlagenen Prinzip.

      Ich hatte übersehen, dass deine Klicktabelle über eine Tabellenkalkulation erzeugt wird. D.h. die Tabellenzellen, die derzeit auf deine Mini-HTMLs verweisen, erzeugst Du durch String-Verkettung in der Tabellenkalkulation?

      Und du hast die 3 Links für die gewünschten Bilder ebenfalls in der Tabellenkalkulation stehen (oder kannst sie erzeugen)? Dann kann man die benötigten Manipulationen, die ich auf meiner Spielseite hatte, auch in der Tabellenkalkulation durchführen. Wenn Du Excel verwendest, benötigst Du nur die Funktion URLCODIEREN.

      Wenn das Anzeige-HTML in file:///c:/temp/show.html steht, müsste man es mit der URL file:///c:/temp/show.html?target1=...&target2=...&target3=... aufrufen. Für das ... setzt Du die Bild-URL ein, jeweils mit URLCODIEREN maskiert. Diese URL kannst Du in Excel erzeugen und im generierten HTML in das href eines Links eintragen.

      Was dann zum nächsten potenziellen Drama führt: Script in lokal geladenen HTML Dateien kann ebenfalls zu entsetzten Rückfragen des Browsers führen (Internet Explorer, der vertraut einem Netzwerkshare aber nicht der lokalen Festplatte). Chrome und Firefox meckern nicht, bei Edge weiß ich es nicht.

      Die show.html liest die 3 Parameter aus und trägt sie per JavaScript in die src Attribute der 3 Image-Elemente ein. Dafür müssen wir nur Gunnars dargestelltes Konzept für Dich nutzbar machen, das kriegen wir aber hin. Diese Datei musst Du dann nur einmal speichern und mit passenden Parametern aufrufen.

      Rolf

      --
      sumpsi - posui - clusi
      1. @@Rolf B

        file:///c:/temp/show.html?target1=...&target2=...&target3=...

        Wenn sich target1, target2 und target3 lediglich im p-Teil unterscheiden (p=d vs. p=w vs. p=m) und man sowieso JavaScript braucht, warum sollte man das tun?

        Das Einzige, was man an show.html übergeben muss, ist der t-Parameter. Optional könnte man noch ggfs. ty, ta und s angeben.

        LLAP 🖖

        --
        Wenn der Faschismus wiederkommt, wird er nicht sagen: Hallo, ich bin der Faschismus! Sondern er wird sagen: Ich nehme die Wahl an.
        1. Hallo Gunnar,

          warum sollte man das tun?

          Du und ich würden das tun. Aber laut TO gibt es mehr als eine Datenquelle. Die finviz-URLs sind nur ein Beispiel; das, was wir hier erfahren haben, ist keine vollständige Requirementliste und sollte wohl auch nie eine sein.

          Eine Anzeige-HTML die spezifisch für finviz ist würde auch bedeuten, dass man für andere Quellen andere Anzeige-HTMLs braucht, in denen ggf. Script anzupassen ist.

          Dann empfehle ich doch lieber Montessori: Hilf mir, es selbst zu tun. Der TO sucht keinen JavaScript-Kurzs, und im Rahmen seiner Möglichkeiten ist die Lösung mit einer parametrierbaren HTML Datei für die Detailanzeige wohl wirklich am besten. Die kann man ihm als Blackbox geben (mit möglichst simplem Inhalt), und mit der Tabellenkalkulation kann er offenbar umgehen. Also muss möglichst alles dort erfolgen, um eine Hilfe zu sein. Und VBA scheidet aus, der TO kennt nach eigenem Bekunden KEINE Programmiersprache.

          Rolf

          --
          sumpsi - posui - clusi
      2. unter uns @Rolf B

        der Server macht ein Connection: Close. Wenn er die Connection offen halten würde Connectio: Keep-Alive also, könnte man tatsächlich drei Requests hintereinander in das Socket schieben und bekommt dadurch auch 3 Images geliefert.

        Das müsste aber auch über einen Proxy funktionieren wenn der Proxy die Connection offenhält. Mit dem Proxy meines Providers funktioniert das so.

        Script folgt!

        MFG

        1. unter uns @Rolf B

          der Server macht ein Connection: Close. Wenn er die Connection offen halten würde Connectio: Keep-Alive also, könnte man tatsächlich drei Requests hintereinander in das Socket schieben und bekommt dadurch auch 3 Images geliefert.

          Das müsste aber auch über einen Proxy funktionieren wenn der Proxy die Connection offenhält. Mit dem Proxy meines Providers funktioniert das so.

          Script folgt!

          Hier isses, as liefert auch 3 Bilder

          use IO::Socket;
          my $proxy = IO::Socket::INET->new('www-proxy.t-online.de:80') or die $@;
          $proxy->print("GET https://finviz.com/chart.ashx?t=STZ&p=m HTTP/1.1\r\n");
          $proxy->print("Connection: Keep-Alive\r\n");
          $proxy->print("Host: www-proxy.t-online.de\r\n\r\n");
          
          $proxy->print("GET https://finviz.com/chart.ashx?t=STZ&p=d HTTP/1.1\r\n");
          $proxy->print("Connection: Keep-Alive\r\n");
          $proxy->print("Host: www-proxy.t-online.de\r\n\r\n");
          
          $proxy->print("GET https://finviz.com/chart.ashx?t=STZ&p=w HTTP/1.1\r\n");
          $proxy->print("Connection: Close\r\n");
          $proxy->print("Host: www-proxy.t-online.de\r\n\r\n");
          
          print while <$proxy>;
          

          MFG

        2. Hallo pl,

          das ist für den TO viel zu low-level. Ein Bit ist für ihn etwas, was eine Schaumkrone trägt. 😉

          Er braucht 3 IMG-Tags mit Bild-URLs.

          Rolf

          --
          sumpsi - posui - clusi
      3. Hallo,

        Wenn Du Excel verwendest, benötigst Du nur die Funktion URLCODIEREN.

        Wenn das Anzeige-HTML in file:///c:/temp/show.html steht, müsste man es mit der URL file:///c:/temp/show.html?target1=...&target2=...&target3=... aufrufen. Für das ... setzt Du die Bild-URL ein, jeweils mit URLCODIEREN maskiert. Diese URL kannst Du in Excel erzeugen und im generierten HTML in das href eines Links eintragen.

        Brauchts denn dann eigentlich die extra HTML-Seite noch, kann das nicht direkt aus Excel heraus aufgerufen werden?

        Gruß
        Kalk

        1. Hallo Tabellenkalk,

          ja, schon. Habe es mir aber verkniffen - dazu braucht's einen kräftigen Schuss VBA (Reaktion auf Klick in eine Zeile, Erstellen eines Image mit einer externen URL, kann man alles tun, muss man nur in VBA programmieren. Und ob es Excel ist, weiß man nicht, das war eine Hypothese).

          Man müsste dafür auch wissen, ob das Offenhalten der Excel-Tabelle für diesen Zweck den Wünschen des TO entspricht.

          Rolf

          --
          sumpsi - posui - clusi
  7. Moin,

    So, Leute, Problem ist gelöst! Google hat geholfen, allerdings wäre ich ohne diese Diskussion nicht drauf gekommen, DANKE an alle Beteiligten!

    Fensterpositionen festlegen braucht JavaScript (Stichwort window.open-Funktion), aber die Browser mögen das nicht mehr sonderlich, weil die Werbefuzzis damit Schindluder treiben.

    Genau das hilft mir. Ich habe mir folgende drei Links gebastelt, die zur vollen Zufriedenheit funktionieren:

    <a href="https://finviz.com/chart.ashx?t=STZ&p=d" onclick="window.open(this.href, 'd', 'width=700,height=340,left=0,top=0'); return false">finviz d</a>

    <a href="https://finviz.com/chart.ashx?t=STZ&p=w" onclick="window.open(this.href, 'w', 'width=700,height=340,left=0,top=420'); return false"" target="_blank">finviz w</a>

    <a href="https://finviz.com/chart.ashx?t=STZ&p=m" onclick="window.open(this.href, 'm', 'width=700,height=340,left=0,top=840'); return false"" target="_blank">finviz m</a>

    Vielleicht guckt Ihr nochmal drauf, ob ein Formfehler drin ist, die arbeiten wie erwartet, nur daß einige Steuerelemente im Browserfenster fehlen, aber das stört nicht. So sieht es aus:

    Bildschirmfoto

    Ich hatte übersehen, dass deine Klicktabelle über eine Tabellenkalkulation erzeugt wird. D.h. die Tabellenzellen, die derzeit auf deine Mini-HTMLs verweisen, erzeugst Du durch String-Verkettung in der Tabellenkalkulation?

    Ja, richtig.

    Und du hast die 3 Links für die gewünschten Bilder ebenfalls in der Tabellenkalkulation stehen (oder kannst sie erzeugen)?

    Auch richtig. Alle (inzwischen acht) Links werde ohne weiteres Zutun automatisch erzeugt, sobald ich einen oder mehrere Datensätze reinkopiere.

    Dann kann man die benötigten Manipulationen, die ich auf meiner Spielseite hatte, auch in der Tabellenkalkulation durchführen.

    Danke, nicht mehr nötig. Und was danach kommt, scheint wieder kompliziert zu sein.

    Aber laut TO gibt es mehr als eine Datenquelle.

    Alle anderen haben nie Probleme gemacht.

    Ein Bit ist für ihn etwas, was eine Schaumkrone trägt.

    NEIN! Ich bin kein Biertrinker. Und wenn ich doch mal eins nehme, dann ohne Schaum.

    Brauchts denn dann eigentlich die extra HTML-Seite noch, kann das nicht direkt aus Excel heraus aufgerufen werden?

    Excel hab' ich nicht, das gibt's ja nur unter Windows. Ich hab' LibreOffice calc. Auch da kann man Hyperlinks einbauen, ist aber ziemlich umständlich und nicht zu automatisieren. Für einen einzelnen Link hab' ich's schon mal gemacht, dauert mehrere Minuten für EINEN Link.

    Rolf

    1. Was war denn nun das Problem?

      MFG

    2. Hallo Rolf,

      die Steuerelemente fehlen, weil Du es nicht angefordert hast. Hier ist dokumentiert, was man noch alles einschalten kann. Beachte, dass "Chrome" hier die diversen Features des Browserfensters meint (sprich: das chromglänzende Rahmenwerk um den Webseiteninhalt herum) und nicht den Chrome-Browser.

      Was Du zeigst, enthält Tippfehler. Da steht return false"" - das muss return false;" heißen. Das ist das Problem bei onclick: Das JavaScript steht als Text in einem HTML Attribut und man muss spitz aufpassen, dass alle Anführungszeichen richtig sind. Vor allem, wenn das Script selbst Anführungszeichen braucht.

      Von window.open hatte ich Dir abgeraten. Wenn es für deinen Fall hinreicht, okay. Du musst dann nur dreimal klicken - mit window.open und einem Fenster pro Chart bekommst Du eine Einklick-Lösung nicht hin. Die Browser lassen pro User-Interaktion genau EINEN window.open zu. Weil blöde Werbespammer das missbraucht haben, um den Screen des Users mit Fenstern zu fluten.

      Die Angabe von target="blank" für den Link brauchst du nicht. Dein onclick Handler endet auf return false;, das unterdrückt die Standardreaktion des Browsers auf den Klick, und es wird nur window.open ausgeführt. Dessen zweiter Parameter (bei Dir das 'd', 'w' und 'm') übernimmt die Aufgabe des target-Attributs. Es gibt hier einen speziellen Wert, nämlich '_blank', um IMMER in einem neuen Fenster zu öffnen. Es kommt natürlich darauf an, ob Du das willst. Ein konkreter Name wie d, w oder m sorgt dafür, dass ein erneuter window.open mit gleicher Namensangabe sich im gleichen Fenster öffnet und damit den alten Inhalt überschreibt.

      Da deine Links von Libreoffice generiert werden, relativiert sich das prinzipielle Problem deiner Lösung: das onclick Attribut. Sowas macht man heutzutage eigentlich anders, man hält JavaScript aus dem HTML heraus, aber ich nehme an, das ist Dir bei generiertem Code egal.

      Wenn Du eine Einklick-Lösung willst, lässt sich das mit JavaScript und einem parametrierten HTML durchaus lösen. Ich zeig's einfach mal.

      (1) Ein zentraler Click-Handler

      Im <head> Bereich deiner Link-Seite bringst Du dieses Scriptlein unter:

      <script>
      document.addEventListener("click", function(e) {
        let link = e.target;
        if (link.tagName != "A" || !link.classList.contains("tripleChart"))
          return;
        let url = link.href +
            "?img1=" +encodeURIComponent(link.dataset.chart1) +
            "&img2=" +encodeURIComponent(link.dataset.chart2) +
            "&img3=" +encodeURIComponent(link.dataset.chart3);
         window.open(url, 'data', 'width=710,height=1120,left=0,top=0'); 
         e.preventDefault();
      });
      </script>
      

      Das ist ein click-handler, der auf JEDEN Klick im Dokument reagiert. Darum fragt er als erstes, ob er von einem a Element mit class="tripleChart" ausgelöst wurde, und stellt gleich wieder die Arbeit ein, wenn es das nicht war. Andernfalls baut er die Ziel-URL aus Attributen des Links zusammen und macht eine Helper-Seite mit window.open auf. Statt mit return false; endet er mit Aufruf von preventDefault, das ist der Standardweg, um die Defaultaktion des Browsers zu übergeben. Das Fenster öffne ich mit 710px Breite, sonst bekomme ich bei mir einen horizontalen Scrollbar. Aber das sind Details 😉

      (2) Die Links

      Die Links dazu sähen dann so aus (der Lesbarkeit wegen auf Zeilen verteilt) - es ist natürlich nur EIN Link für alle 3 Charts. data-Attribute kann man im JavaScript mit der dataset-Eigenschaft nutzen und dienen zur Standard-Erweiterung von HTML Elementen.

      <a class="tripleChart" 
         href="showImages.html" 
         data-chart1="https://finviz.com/chart.ashx?t=STZ&p=d"
         data-chart2="https://finviz.com/chart.ashx?t=STZ&p=w"
         data-chart3="https://finviz.com/chart.ashx?t=STZ&p=m">Finviz d/w/m</a>
      

      Die showImages.html sollte im gleichen Ordner liegen wie die Index-HTML, dann braucht man keine besonderen Angaben für den Ort der Datei.

      Und sie sieht so aus - ACHTUNG, MINIMALISMUS! Da ist keine Fehlerprüfung drin, sie erwartet immer genau 3 Bilder, hat keine Überschrift, sie legt fest, dass ein Bild mit 1/3 der Fensterhöhe angezeigt wird und ist nicht responsiv. Also eigentlich jede HTML Sünde für's Web, aber du brauchst ja nur einen fix dimensionierten Popup-Container für 3 Bilder. Für deinen Zweck sollte sie daher vollig hinreichen. Als Template für eine Internetseite dient sie nicht. Es ist im Prinzip eine reduzierte Version von Gunnars Vorschlag.

      <!DOCTYPE html>
      <html>
      <head>
      <title>Chartanzeige</title>
      <style>
      img {
         height: 33vh;
      }
      </style>
      </head>
      <body>
      <script>
      let parms = new URLSearchParams(document.location.search);
      
      for (let i=1; i<=3; i++) {
         let img = document.createElement("img");
         img.src = parms.get("img" + i);
         document.body.appendChild(img);
      }
      </script>
      

      Getestet habe ich das mit Chrome und Firefox unter Windows

      Rolf

      --
      sumpsi - posui - clusi
      1. Moin Rolf,

        Du bist für mich der Held des Tages, es geht also doch genauso, wie ich mir das vorgestellt hatte. Das hab' ich kaum noch zu hoffen gewagt, nach allem "geht nicht". Vor allem noch ein dickes Lob dafür, daß Du es so erklärt hast, daß ICH es verstanden habe und umsetzen konnte.

        die Steuerelemente fehlen, weil Du es nicht angefordert hast.

        Kein Problem, mir kam's nur komisch vor.

        Was Du zeigst, enthält Tippfehler.

        Ist mir wohl beim Kopieren reingerutscht. Hatte keine Auswirkung, ist jetzt aber ohnehin obsolet.

        Die showImages.html sollte im gleichen Ordner liegen

        Bei mir besser nicht, ich kann unter ubuntu kein Schreibschutz-Attribut für eine einzelne Datei vergeben, hab's an einen "sicheren" Ort verschoben und den Pfad angepaßt.

        Das Fenster öffne ich mit 710px Breite, sonst bekomme ich bei mir einen horizontalen Scrollbar.

        Ich hab' die ganzen Größen- und Positionsangaben wieder 'rausgenommen, die waren ja nur dafür da, um drei Charts in drei Fenstern untereinander darzustellen. Jetzt öffnet der Link - wie auch die anderen - ein Fenster in voller Bildschirmgröße.

        ... und ist nicht responsiv.

        Naja, ein bißchen responsiv war's schon, mir ZU responsiv. Bei jeder Änderung der Fenstergröße hat sich auch die Größe der Grafiken angepaßt, das lag an der Angabe "height: 33vh". Die hab' ich durch "height: 340" ersetzt, damit ich die Charts ohne Skalierung angezeigt bekomme, egal wie groß das Fenster ist. Die sehen einfach "sauberer" aus, wenn sie nicht skaliert sind.

        Getestet habe ich das mit Chrome und Firefox unter Windows

        Läuft einwandfrei auch mit Firefox unter ubuntu. DANKE!!!