tag:forum.selfhtml.org,2005:/self Verwendung Zugriffszähler mit Onlineanzeige – SELFHTML-Forum 2019-10-29T14:14:33Z https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758471#m1758471 Christian 2019-10-06T12:21:49Z 2019-10-06T12:21:49Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo,</p> <p>ich konnte erfolgreich den visitcount.php unter <a href="https://wiki.selfhtml.org/wiki/PHP/Tutorials/Zugriffsz%C3%A4hler_mit_Onlineanzeige" rel="nofollow noopener noreferrer">https://wiki.selfhtml.org/wiki/PHP/Tutorials/Zugriffszähler_mit_Onlineanzeige</a> zum Laufen bringen. Ich bin mir aber nicht sicher, ob hier alle Besucher auch als online angezeigt werden, d.h. inklusive aller Unterseiten einer Domain.</p> <p>Ich habe dies daran feststellen können, dass auf der Hauptseite www.exmaple.de nur ein Besucher als online angezeigt wurde, aber auf der Unterseite www.example.de/forum via dem integrierten phpbb Zähler des Forums 10 Besucher als Online angezeigt wurden.</p> <p>Muß hier im php-Script bzw. anderen Dateien ggf. noch etwas modifiziert werden, um die komplette Domain mit alle Subpages für den Onlinezähler abzudecken?</p> <p>Vielen Dank für die Rückinfos.</p> <p>Christian</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758472#m1758472 TS ts-self@online.de https://bitworks.de 2019-10-06T12:32:37Z 2019-10-06T12:32:37Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hello,</p> <p>jede Seite, deren Requests gezählt werden sollen, benötigen mindestens das Zählpixel und ein <img>-Element, in dem visitcpunt dann z. B. mit der Option <code>?noshow</code> aufgerufen wird.</p> <p>Der Zähler vom CMS ist vermutlich nicht floadingsafe. Probier es mal aus, ob er <strong>jeden</strong> Request zählt, oder nur einen pro Besucher (IP) innerhalb eines Zeitabschnittes.</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758474#m1758474 Der Martin 2019-10-06T12:50:02Z 2019-10-06T12:50:02Z Verwendung Zugriffszähler mit Onlineanzeige <p>Moin,</p> <blockquote> <p>ich konnte erfolgreich den visitcount.php unter <a href="https://wiki.selfhtml.org/wiki/PHP/Tutorials/Zugriffsz%C3%A4hler_mit_Onlineanzeige" rel="nofollow noopener noreferrer">https://wiki.selfhtml.org/wiki/PHP/Tutorials/Zugriffszähler_mit_Onlineanzeige</a> zum Laufen bringen.</p> </blockquote> <p>das ist schön - aber was versprichst du dir davon? Hältst du das für sinnvoll oder nützlich? - Ich nicht, und im Beitrag steht ja auch schon etwas zur Sinnhaftigkeit solcher Counter.</p> <blockquote> <p>Ich bin mir aber nicht sicher, ob hier alle Besucher auch als online angezeigt werden, d.h. inklusive aller Unterseiten einer Domain.</p> </blockquote> <p>In der Beschreibung heißt es eindeutig: "Für <strong>eine</strong> Webseite soll eine Zählung ..."<br> (Hervorhebung von mir)<br> Also musst du den Zähler auch auf <strong>allen</strong> Seiten einbauen, auf denen du Besucher zählen willst.</p> <p>So long,<br>  Martin</p> <div class="signature">-- <br> Ach, macht ihr da Ohm doch Watt ihr Volt. </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758478#m1758478 Christian 2019-10-06T14:16:49Z 2019-10-06T14:16:49Z Verwendung Zugriffszähler mit Onlineanzeige <blockquote> <p>Hello,</p> <p>jede Seite, deren Requests gezählt werden sollen, benötigen mindestens das Zählpixel und ein <img>-Element, in dem visitcpunt dann z. B. mit der Option <code>?noshow</code> aufgerufen wird.</p> <p>Der Zähler vom CMS ist vermutlich nicht floadingsafe. Probier es mal aus, ob er <strong>jeden</strong> Request zählt, oder nur einen pro Besucher (IP) innerhalb eines Zeitabschnittes.</p> <p>Glück Auf<br> Tom vom Berg</p> </blockquote> <p>Hallo Tom,</p> <p>vielen Dank für die Rückinfo. Ich verwende kein CMS und habe visitcount.php auf der gleichen Ebene wie die index.html integriert. Deshalb wäre hier meine Frage wie man dies bewerkstelligen müsste, da die Website aus vielen Unterseiten: www.expample.de/subpage1, www.example.de/subpage2, www.example.de/forum, etc. besteht. Wie würde dies dann mit <img> und ?noshow konkret aussehen?</p> <p>Schon vorab vielen Dank.</p> <p>Grüße</p> <p>Christian</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758501#m1758501 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-07T17:35:17Z 2019-10-07T17:35:17Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <p>In der Beschreibung heißt es eindeutig: "Für <strong>eine</strong> Webseite soll eine Zählung ..."<br> (Hervorhebung von mir)</p> </blockquote> <p>Ja... da steht halt freilich noch die Uneindeutigkeit des Wortes "Webseite" im Raum. Das ist hier vermutlich auch Kern des Verständnisproblems.</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758479#m1758479 TS ts-self@online.de https://bitworks.de 2019-10-06T14:45:47Z 2019-10-06T14:53:02Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hello,</p> <blockquote> <blockquote> <p>Hello,</p> <p>jede Seite, deren Requests gezählt werden sollen, benötigen mindestens das Zählpixel und ein <img>-Element, in dem visitcpunt dann z. B. mit der Option <code>?noshow</code> aufgerufen wird.</p> <p>Der Zähler vom CMS ist vermutlich nicht floadingsafe. Probier es mal aus, ob er <strong>jeden</strong> Request zählt, oder nur einen pro Besucher (IP) innerhalb eines Zeitabschnittes.</p> <p>Glück Auf<br> Tom vom Berg</p> </blockquote> <p>Hallo Tom,</p> <p>vielen Dank für die Rückinfo. Ich verwende kein CMS und habe visitcount.php auf der gleichen Ebene wie die index.html integriert. Deshalb wäre hier meine Frage wie man dies bewerkstelligen müsste, da die Website aus vielen Unterseiten: www.expample.de/subpage1, www.example.de/subpage2, www.example.de/forum, etc. besteht. Wie würde dies dann mit <img> und ?noshow konkret aussehen?</p> </blockquote> <p>Dazu musst Du dir nur den Quelltext der beiden Beispiele ganz unten im Artikel ansehen.</p> <p>Jede Seite, die gezählt werden soll, muss ein <code><img src="/visitcount/visitcount.php" alt="counter"></code> enthalten. Damit der Zähler nicht angezeigt wird, schreibst Du stattdessen <code><img src="/visitcount/visitcount.php?noshow" alt="countpixel"></code>.</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758482#m1758482 Christian 2019-10-06T15:41:52Z 2019-10-06T15:41:52Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo Tom,</p> <p>verstanden. Hierzu dann noch zwei Fragen:</p> <p>a) Muss ich ebenfalls auf allen Seiten das Script: <script src="http://www.example.de/visitcount/visitcount_trigger.js"></script> einbauen?</p> <p>b) Werden nach Einbau von <img src="/visitcount/visitcount.php?noshow" alt="countpixel"> auf den einzelnen Unterseiten dann auch alle Online-Besucher der Website kummuliert dargestellt, was ja eigentlich der Fall sein sollte, oder?</p> <p>Ein erster Test mit nur <img src="/visitcount/visitcount.php?noshow" alt="countpixel"> hat leider nicht funktioniert und es wurde immer noch nur ein Besucher angezeigt, obwohl mehrere Online waren.</p> <p>Viele Grüße</p> <p>Christian</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758484#m1758484 TS ts-self@online.de https://bitworks.de 2019-10-06T16:27:36Z 2019-10-06T16:31:00Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hello,</p> <blockquote> <p>verstanden. Hierzu dann noch zwei Fragen:</p> <p>a) Muss ich ebenfalls auf allen Seiten das Script: <script src="http://www.example.de/visitcount/visitcount_trigger.js"></script> einbauen?</p> </blockquote> <p>Auf allen Seiten auf denen dann im <body>-Tag die Funktion für die Aufenthaltsfeststellung eingebaut werden soll.</p> <blockquote> <p>b) Werden nach Einbau von <img src="/visitcount/visitcount.php?noshow" alt="countpixel"> auf den einzelnen Unterseiten dann auch alle Online-Besucher der Website kummuliert dargestellt, was ja eigentlich der Fall sein sollte, oder?</p> </blockquote> <p>Ja, die Scripte auf den einzelnen Seiten benutzen alle dieselbe Datendatei, wenn Du die Pfade zu den Daten nicht veränderst.</p> <blockquote> <p>Ein erster Test mit nur <img src="/visitcount/visitcount.php?noshow" alt="countpixel"> hat leider nicht funktioniert und es wurde immer noch nur ein Besucher angezeigt, obwohl mehrere Online waren.</p> </blockquote> <p>Bedenke, dass Besucher mit gleicher IP nur einmal gezählt werden, auch wenn sie sich mehrere Seiten des Auftrittes nacheinander anschauen.</p> <p>Du kannst also auf diese Weise <strong>nicht</strong> feststellen, welche <strong>Unterseite</strong> wie oft aufgerufen wurde. Dazu müsstest Du den Zähler umbauen.</p> <h4>Testen:</h4><p>Du kannst uns ja nachher mal einen Link zu deiner Testseite schicken, dann klicken wir alle mal unx Du siehst, ob es funktioniert ;-)</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758502#m1758502 Der Martin 2019-10-07T17:49:24Z 2019-10-07T17:49:24Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo Janosch,</p> <blockquote> <blockquote> <p>In der Beschreibung heißt es eindeutig: "Für <strong>eine</strong> Webseite soll eine Zählung ..."<br> (Hervorhebung von mir)</p> </blockquote> <p>Ja... da steht halt freilich noch die Uneindeutigkeit des Wortes "Webseite" im Raum.</p> </blockquote> <p>findest du das wirklich mehrdeutig? Eine Webseite ist eine einzelne Seite eines Webauftritts oder einer Webpräsenz. Analog im Englischen: Web page vs. web site.<br> Die phonetische Ähnlichkeit zwischen Seite und Site ist allerdings tückisch, das gebe ich zu. Einer der vielen False Friends zwischen Deutsch und Englisch. So wie ich heute wieder einen Kollegen diskret darauf hingewiesen habe, dass er einen falschen Ausdruck gewählt hatte, dass <em>actual</em> eben <strong>nicht</strong> <em>aktuell</em> heißt.</p> <blockquote> <p>Das ist hier vermutlich auch Kern des Verständnisproblems.</p> </blockquote> <p>Möglich. Das ist aber ein Unterschied, den man sehr bald verstehen sollte, weil man sonst immer wieder wegen der Begrifflichkeiten aneckt.</p> <p>Schönen Abend noch,<br>  Martin</p> <div class="signature">-- <br> Ach, macht ihr da Ohm doch Watt ihr Volt. </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758504#m1758504 TS ts-self@online.de https://bitworks.de 2019-10-07T18:11:27Z 2019-10-07T18:11:27Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hello,</p> <blockquote> <p>Aloha ;)</p> <blockquote> <p>In der Beschreibung heißt es eindeutig: "Für <strong>eine</strong> Webseite soll eine Zählung ..."<br> (Hervorhebung von mir)</p> </blockquote> <p>Ja... da steht halt freilich noch die Uneindeutigkeit des Wortes "Webseite" im Raum. Das ist hier vermutlich auch Kern des Verständnisproblems.</p> </blockquote> <p>Es wird doch deutlich gezeigt, wie die drei Elemente <code>JS-Script</code>, <code>JS-Funktionsaufruf</code> und <code><img>-Element (PHP-Programm)</code> im HTML <strong>eines Dokumentes</strong> eingebunden werden müssen. Dass das dann in jedem Dokument, dessen Aufrufe gezählt werden sollen. notwendig ist, sollte man schon von alleine folgern können.</p> <p>Und schließlich steht das Forum noch zur Fragebeantwortung zur Verfügung ;-)</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758506#m1758506 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-07T18:38:22Z 2019-10-07T18:38:22Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <p>Die phonetische Ähnlichkeit zwischen Seite und Site ist allerdings tückisch, das gebe ich zu. Einer der vielen False Friends zwischen Deutsch und Englisch.</p> </blockquote> <p>Genau da liegt der Hase im Pfeffer. Eigentlich wäre das deutsche Webseite (web page) schon eindeutig, aber die phonetische Ähnlichkeit mit web site und die allgegenwärtige Verenglischung tragen dazu bei, dass Webseite und Website immer mehr vermischt werden - und auch teils mit genau der gegenteiligen Intention verwendet werden.</p> <p>Daher würd ich sogar weitergehen. Website ist nicht nur ein False Friend, sondern sogar bereits in den deutschen Sprachgebrauch als Fremdwort übergegangen und daher doppelt gefährlich, da vielerorts nicht mehr zwischen Webseite und Website unterschieden wird - wer keine Ahnung von der Materie hat, dem ist der Unterschied bei zwei so ähnlich klingenden, bedeutungsähnlichen Worten auch schwer zu vermitteln.</p> <p>Noch schlimmer: "Meine Seite" wird inzwischen auch mal gerne für ein persönliches Webprojekt verwendet. Die Vermischung im normalen Sprachgebrauch (= abseits der Fachsprache) ist also bereits weit fortgeschritten.</p> <blockquote> <blockquote> <p>Das ist hier vermutlich auch Kern des Verständnisproblems.</p> </blockquote> <p>Möglich. Das ist aber ein Unterschied, den man sehr bald verstehen sollte, weil man sonst immer wieder wegen der Begrifflichkeiten aneckt.</p> </blockquote> <p>Richtig. Wie auch der Umstand, dass ein Zählpixel natürlich nur dann angefasst werden kann, wenn es auf der konkret aufgerufenen Seite eingebunden ist. Das war allerdings hier auch nicht gegeben.</p> <p>Vielleicht wäre es daher sinnvoll, das Wort Webseite zu vermeiden, weil es nur mit Fachsprach-Kenntnissen eindeutig zu deuten ist. Vielleicht wäre ein "Webdokument" oder ein "HTML-Dokument im Web" eindeutiger und daher für Anfänger freundlicher?</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758505#m1758505 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-07T18:31:03Z 2019-10-07T18:31:03Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <p>Es wird doch deutlich gezeigt, wie die drei Elemente <code>JS-Script</code>, <code>JS-Funktionsaufruf</code> und <code><img>-Element (PHP-Programm)</code> im HTML <strong>eines Dokumentes</strong> eingebunden werden müssen. Dass das dann in jedem Dokument, dessen Aufrufe gezählt werden sollen. notwendig ist, sollte man schon von alleine folgern können.</p> </blockquote> <p>Du setzt da aber voraus, dass da bereits ein Verständnis dafür da ist, wie die Mechanismen intern ticken. Wer keine Ahnung von der Materie hat könnte auf die Idee kommen, es genüge, das Ding im Webroot zu hinterlegen und irgendwo einzubinden, weil wenn man eine Unterseite aufruft ist das ja immernoch im selben Webauftritt.</p> <p>Mir und dir ist völlig klar, dass das so nicht funktioniert. Ein Anfänger hat ggf. keine Vorstellung davon, was der Webserver bei einem Seitenaufruf alles so anfasst, und was eben nicht.</p> <p>Und da kommt das Eindeutigkeitsproblem ins Spiel: Mit "Webseite" meint man gelegentlich ein einzelnes aufzurufendes Webdokument, manchmal meint man damit aber auch das gesamte Projekt, also den gesamten Webauftritt. Wer da jetzt für "Webseite" nicht "Webdokument" sondern "Webauftritt" versteht, tappt in die Falle und wird ggf. noch in seinen Fehlvorstellungen bestätigt.</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758507#m1758507 Christian 2019-10-07T19:26:41Z 2019-10-07T19:26:41Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo,</p> <p>jetzt hätte ich aber noch einmal eine Frage zur Einbindung wenn ich die Diskussion richtig verfolgt habe.</p> <p>Man muss auf allen einzelnen Seiten:</p> <p>a) den Script <script src="/visitcount/visitcount_trigger.js"></script></p> <p>b) <body onLoad="counter_refresh('/visitcount/visitcount.php');"> --> oder ist dies nicht notwendig?</p> <p>c) <div id="counter"><img id="img_counter" src="/visitcount/visitcount.php" alt="counter"></div></p> <p>einbinden, richtig?</p> <p>Was ist hier dann der JS-Funktionsaufruf?</p> <p>Desweiteren wäre meine Frage was man machen muss wenn alle Webseiten/Webdokumente den gleichen Footer über ein php include haben.</p> <p>Schon vorab vielen Dank für die Rückinfo.</p> <p>Christian</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758519#m1758519 marctrix self@mhis.de https://www.mhis.de 2019-10-08T09:15:20Z 2019-10-08T09:15:20Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hej Camping_RIDER,</p> <blockquote> <blockquote> <p>Die phonetische Ähnlichkeit zwischen Seite und Site ist allerdings tückisch, das gebe ich zu. Einer der vielen False Friends zwischen Deutsch und Englisch.</p> </blockquote> <p>Genau da liegt der Hase im Pfeffer. Eigentlich wäre das deutsche Webseite (web page) schon eindeutig, aber die phonetische Ähnlichkeit mit web site und die allgegenwärtige Verenglischung tragen dazu bei, dass Webseite und Website immer mehr vermischt werden […]</p> </blockquote> <p>Gab es mal eine Zeit, wo einer gesagt hat "ich habe eine Webseite" und meinte damit, dass er ein einzelnes HTML-Dokument besitzt?</p> <p>Meinem Gefühl nach war Webseite schon immer umgangssprachlich für Webauftritt inklusive aller Unterseiten.</p> <p>Ist eine einzelne Seite gemeint, wird in der Regel deren Name genannt. Die <em>Startseite</em> oder das <em>Kontaktformular</em> (womit nicht das <code>form</code>-Element gemeint ist, sondern die Seite, die das enthält).</p> <p>So reden auch die Entwickler miteinander, die ich kenne.</p> <p>Als Dozent achte ich natürlich darauf und erkläre das auch zu Anfang explizit.</p> <p>Aber ein Dozent ist halt auch ein komischer Kauz. </p> <p>Homepage bedeutet für die meisten Deutschen dasselbe wie Webseite oder Website und ist etwas anderes als das englische „home page“, was nämlich Startseite bedeutet.</p> <p>Ich spreche auch am liebsten von HTML-Dokumenten in den Kursen, wo es um statisches HTML geht.</p> <p>Ansonsten übernehme ich die offiziellen Begrifflichkeiten, die das System, wie z.B. Wordpress vorgibt (Seiten, Beiträge und ggfs. weitere durch PlugIns erzeugte Möglichkeiten).</p> <p>Marc</p> <div class="signature">-- <br> Ceterum censeo Google esse delendam </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758509#m1758509 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-07T21:45:16Z 2019-10-07T21:45:16Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <p>jetzt hätte ich aber noch einmal eine Frage zur Einbindung wenn ich die Diskussion richtig verfolgt habe.</p> <p>Man muss auf allen einzelnen Seiten:</p> <p>a) den Script <script src="/visitcount/visitcount_trigger.js"></script></p> <p>b) <body onLoad="counter_refresh('/visitcount/visitcount.php');"> --> oder ist dies nicht notwendig?</p> <p>c) <div id="counter"><img id="img_counter" src="/visitcount/visitcount.php" alt="counter"></div></p> <p>einbinden, richtig?</p> </blockquote> <p>Ja, richtig.</p> <blockquote> <p>Was ist hier dann der JS-Funktionsaufruf?</p> </blockquote> <p>In dem Fall: b) - denn hier wird die JS-Funktion aufgerufen, mit dem PHP-Skript als Parameter.</p> <p><a href="/users/4179" class="mention registered-user" rel="noopener noreferrer">@TS</a>: Warum eigentlich body onload noch ins HTML und nicht direkt ein body.addEventListener(load, ...)?</p> <blockquote> <p>Desweiteren wäre meine Frage was man machen muss wenn alle Webseiten/Webdokumente den gleichen Footer über ein php include haben.</p> </blockquote> <p>Nichts anderes. Wenn du den Counter im Footer anzeigen willst, dann packst du das img mit dem Counter einfach da rein.</p> <blockquote> <p>Schon vorab vielen Dank für die Rückinfo.</p> </blockquote> <p>Kein Ding.</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758511#m1758511 Orlok 2019-10-07T23:23:15Z 2019-10-08T01:17:54Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo Camping_RIDER</p> <blockquote> <p>Warum eigentlich body onload noch ins HTML und nicht direkt ein <code>body.addEventListener('load', ...)</code>?</p> </blockquote> <p>Diese Variante würde nicht funktionieren, denn das <code>body</code>-Element hat kein <code>load</code>-Event.</p> <p>Aus historischen Gründen führt eine Handler-Registrierung über das Attribut <code>onload</code> auf dem <code>body</code>-Element tatsächlich dazu, dass der Handler auf <code>window</code> registriert wird, wo es ein entsprechendes Event gibt. Bei Verwendung der moderneren Methode <code>addEventListener</code> passiert das hingegen nicht.</p> <pre><code class="block language-javascript"><span class="token keyword">const</span> <span class="token function-variable function">handler</span> <span class="token operator">=</span> <span class="token parameter">_</span> <span class="token operator">=></span> <span class="token punctuation">{</span><span class="token punctuation">}</span> document<span class="token punctuation">.</span>body<span class="token punctuation">.</span>onload <span class="token operator">=</span> handler console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>document<span class="token punctuation">.</span>body<span class="token punctuation">.</span>onload <span class="token operator">===</span> window<span class="token punctuation">.</span>onload<span class="token punctuation">)</span> <span class="token comment">// true</span> </code></pre> <p>Die Eigenschaft <code>body.onload</code> reflektiert <code>window.onload</code> und umgekehrt. Das heißt, eine Zuweisung an eine der Eigenschaften überschreibt immer auch den Wert der jeweils anderen Eigenschaft. Und eine spätere Zuweisung an eine der beiden Eigenschaften überschreibt eine vorangegangene Registrierung über das <code>onload</code>-Attribut im Markup.</p> <pre><code class="block language-html"> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>body</span> <span class="token special-attr"><span class="token attr-name">onload</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value javascript language-javascript">console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript"> window<span class="token punctuation">.</span><span class="token function-variable function">onload</span> <span class="token operator">=</span> <span class="token parameter">_</span> <span class="token operator">=></span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span> </span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>html</span><span class="token punctuation">></span></span> </code></pre> <p>Hier wird nur <code>2</code> in die Konsole geschrieben, da in beiden Fällen ein Handler für die Eigenschaft <code>window.onload</code> registriert wird, und das Skript die Registrierung des anonymen Handlers im Markup überschreibt.</p> <p>Soll aus einem Skript heraus das globale <code>load</code>-Event überwacht werden (und nicht das meist besser geeignete Event <code>DOMContentLoaded</code>), dann muss die Registrierung auf dem <code>window</code>-Objekt erfolgen, wenn dafür die zu Recht empfohlene Methode <code>addEventListener</code> verwendet werden soll.</p> <pre><code class="block language-javascript">window<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">'load'</span><span class="token punctuation">,</span> <span class="token parameter">event</span> <span class="token operator">=></span> <span class="token comment">/* ... */</span><span class="token punctuation">)</span> <span class="token comment">// oder</span> <span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">'load'</span><span class="token punctuation">,</span> <span class="token parameter">event</span> <span class="token operator">=></span> <span class="token comment">/* ... */</span><span class="token punctuation">)</span> </code></pre> <p>Die explizite Referenz auf <code>window</code> kann weggelassen werden, da <code>addEventListener</code> als Eigenschaft des globalen Objekts auch direkt angesprochen werden kann. Die Bindung an <code>window</code> als Kontextobjekt erfolgt hier automatisch.</p> <p>Viele Grüße,</p> <p>Orlok</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758523#m1758523 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-08T11:45:08Z 2019-10-08T11:45:08Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <blockquote> <p>Warum eigentlich body onload noch ins HTML und nicht direkt ein <code>body.addEventListener('load', ...)</code>?</p> </blockquote> <p>Diese Variante würde nicht funktionieren, denn das <code>body</code>-Element hat kein <code>load</code>-Event.</p> </blockquote> <p>Danke für die Aufklärung! Und…</p> <blockquote> <p>Aus historischen Gründen führt eine Handler-Registrierung über das Attribut <code>onload</code> auf dem <code>body</code>-Element tatsächlich dazu, dass der Handler auf <code>window</code> registriert wird, wo es ein entsprechendes Event gibt. Bei Verwendung der moderneren Methode <code>addEventListener</code> passiert das hingegen nicht.</p> </blockquote> <p>…das war mir tatsächlich neu, erklärt aber Effekte, die ich mir bisher nicht erklären konnte.</p> <p>Allerdings bleibt die Frage: warum den JS-Aufruf ins HTML einbinden und nicht direkt in der eh bereits vorhandenen JS-Datei feuern?</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758544#m1758544 TS ts-self@online.de https://bitworks.de 2019-10-09T07:04:51Z 2019-10-09T07:04:51Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hello,</p> <p>es wäre doch mMn eine gute Tat, wenn Du dem Artikel einen eigenen Abschnitt mit den gewonnenen Erkenntnissen und der alternativen Methode hinzufügen würdest.</p> <p>Die Intention bei der Nutzung von <code><body onLoad="..."></code> war, hier in kleinsten und leicht nachvollziehbaren Schritten das mögliche Zusammenspiel von HTML und JavaScript zu demonstrieren. Deine Vorgehensweise benötigt hingegen schon wieder eine oder sogaf mehrere Wissensebenen zusätzlich.</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758545#m1758545 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-09T07:40:15Z 2019-10-09T07:40:15Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <p>es wäre doch mMn eine gute Tat, wenn Du dem Artikel einen eigenen Abschnitt mit den gewonnenen Erkenntnissen und der alternativen Methode hinzufügen würdest.</p> </blockquote> <p>Klar, gerne, sobald wir ausreichend darüber gesprochen haben.</p> <blockquote> <p>Die Intention bei der Nutzung von <code><body onLoad="..."></code> war, hier in kleinsten und leicht nachvollziehbaren Schritten das mögliche Zusammenspiel von HTML und JavaScript zu demonstrieren. Deine Vorgehensweise benötigt hingegen schon wieder eine oder sogaf mehrere Wissensebenen zusätzlich.</p> </blockquote> <p>Warum eine oder mehrere Wissensebenen zusätzlich? JavaScript und das DOM sollten ja ggf. schon verstanden sein, und wir empfehlen bereits an <a href="https://wiki.selfhtml.org/wiki/JavaScript/DOM/Event/%C3%9Cbersicht" rel="nofollow noopener noreferrer">anderer Stelle</a> die Verwendung von addEventListener statt der HTML-Attribute, da wir ja <a href="https://wiki.selfhtml.org/wiki/HTML/Tutorials/Trennung_von_Inhalt,_Pr%C3%A4sentation_und_Verhalten#unaufdringliches_JavaScript" rel="nofollow noopener noreferrer">unobtrusives JavaScript</a> für empfehlenswert halten und dementsprechend auch propagieren wollen.</p> <p>Deshalb stellt sich für mich die Frage, ob die Darstellung als alternativer Weg sinnvoll ist, oder ob nicht besser gleich diese Vorgehensweise vorgeschlagen werden sollte.</p> <p>Die Einbindung wäre dadurch einfacher (in nur zwei statt drei Schritten) und wir würden unseren eigenen Empfehlungen konsistenter folgen.</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758547#m1758547 JürgenB https://www.j-berkemeier.de 2019-10-09T08:04:23Z 2019-10-09T08:04:23Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo,</p> <blockquote> <p>Die Intention bei der Nutzung von <code><body onLoad="..."></code> war, hier in kleinsten und leicht nachvollziehbaren Schritten das mögliche Zusammenspiel von HTML und JavaScript zu demonstrieren. Deine Vorgehensweise benötigt hingegen schon wieder eine oder sogaf mehrere Wissensebenen zusätzlich.</p> </blockquote> <p>wenn man für den Zähler einen Block aus HTML-Element, Scripteinbindung und evtl. Scriptbereich zur Parametrisierung und zum Starten erstellt, kann man diesen überall, auch z.B. im zentralen Footer einbinden und benötigt keine Events mehr.</p> <p>Gruß<br> Jürgen</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758613#m1758613 Orlok 2019-10-11T01:57:15Z 2019-10-11T01:57:15Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo TS</p> <blockquote> <p>Es wäre doch mMn eine gute Tat, wenn Du dem Artikel einen eigenen Abschnitt mit den gewonnenen Erkenntnissen und der alternativen Methode hinzufügen würdest.</p> </blockquote> <p>Das wäre sicher eine gute Tat. Eine noch bessere wäre es allerdings, wenn das in dem Artikel vorgestellte Programm eine Ausgabe produzieren würde, die für alle Seitenbesucher zugänglich ist und nicht nur für diejenigen, die sehen können.</p> <p>Die ermittelte Anzahl der Seitenbesucher wird serverseitig als Bild gerendert und so zum Client geschickt. Das ist gleich in doppelter Hinsicht problematisch:</p> <ol> <li> <p><strong>Es gibt keine textuelle Alternative</strong>. Benutzern mit fehlender oder stark eingeschränkter Sehfähigkeit, die sich die Seite vorlesen lassen, bleibt die Information verborgen.</p> </li> <li> <p><strong>Der Text wird als Rastergrafik ausgeliefert</strong>. Benutzer mit eingeschränkter Sehfähigkeit, die eine größere Schrift benötigen, können den Text unter Umständen nicht entziffern.</p> </li> </ol> <p>Ein besseres Beispiel wäre es, wenn sich der Server nur um die Bereitstellung der Daten kümmern würde und der Client die Präsentation übernimmt, in einer Weise, dass die Informationen für alle Besucher der Seite zugänglich sind. Die übermittelten Werte sollten ordentlich ausgezeichnet werden, etwa so wie im folgenden Beispiel.</p> <pre><code class="block language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>aside</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>counter<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token comment"><!-- Überschrift oder aria-label mit Accessible Name --></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>label</span> <span class="token attr-name">for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>online<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Online:<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>label</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>output</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>online<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>output</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>label</span> <span class="token attr-name">for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>visits<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Visits:<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>label</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>output</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>visits<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>output</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>aside</span><span class="token punctuation">></span></span> </code></pre> <p>Bis zur erfolgreichen Ausführung des Skripts sollten die Elemente verborgen werden. Dazu wird das Attribut <code>hidden</code> auf dem Containerelement gesetzt. Erst wenn das Skript ausgeführt und der erste Satz Daten eingetroffen ist, wird das Attribut entfernt. Wenn neue Daten eintreffen, wird nur der textuelle Inhalt der für die Ausgabe vorgesehenen Elemente aktualisiert.</p> <p>Alternativ könnte das Markup auch mit dem Skript ausgeliefert und nachträglich in das Dokument eingefügt werden. Das wäre in diesem Fall vermutlich sogar die bessere Variante, da die Komponente nur gerendert werden soll, wenn das Skript tatsächlich ausgeführt wird.</p> <pre><code class="block language-javascript"><span class="token keyword">const</span> <span class="token function-variable function">createCounter</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter">online<span class="token punctuation">,</span> visits</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> document<span class="token punctuation">.</span>body<span class="token punctuation">.</span><span class="token function">insertAdjacentHTML</span><span class="token punctuation">(</span> <span class="token string">'beforeend'</span><span class="token punctuation">,</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string"> <aside id="counter"> <h2>User Counter</h2> <label for="online">Online:</label> <output id="online"></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span> online <span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"></output> <label for="visits">Visits:</label> <output id="visits"></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span> visits <span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"></output> </aside> </span><span class="token template-punctuation string">`</span></span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>Das Einfügen ins Dokument könnte wie in dem Beispiel oben erfolgen. Ich verwende hier einen Templatestring, um die initialen Werte einzufügen und um mir das Escapen der Zeilenumbrüche zu ersparen. Die Elemente werden am Ende von <code>body</code> eingefügt. Um den Zähler an einer beliebigen Stelle ins Dokument einfügen zu können, könnte man das Elternelement natürlich auch als Argument übergeben.</p> <p>Darüber hinaus sollte die Kommunikation mit dem Server über das <a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API" rel="nofollow noopener noreferrer">Fetch API</a> laufen, statt dafür ein <code>img</code> zu missbrauchen, wobei es sich aus pädagogischer Sicht anbieten würde, die Daten für die Besucherzahlen im JSON-Format zu übertragen. Das Response-Objekt besitzt eine entsprechende Methode, mit der die Daten einfach konvertiert werden können.</p> <pre><code class="block language-javascript"><span class="token keyword">const</span> <span class="token function-variable function">getData</span> <span class="token operator">=</span> <span class="token keyword">async</span> <span class="token parameter">url</span> <span class="token operator">=></span> <span class="token punctuation">{</span> <span class="token keyword">const</span> response <span class="token operator">=</span> <span class="token keyword">await</span> <span class="token function">fetch</span><span class="token punctuation">(</span>url<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">const</span> <span class="token punctuation">{</span>online<span class="token punctuation">,</span> visits<span class="token punctuation">}</span> <span class="token operator">=</span> <span class="token keyword">await</span> response<span class="token punctuation">.</span><span class="token function">json</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> outputForOnline<span class="token punctuation">.</span>value <span class="token operator">=</span> online<span class="token punctuation">;</span> outputForVisits<span class="token punctuation">.</span>value <span class="token operator">=</span> visits<span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>Angenommen, die Variablen <code>outputForOnline</code> und <code>outputForVisits</code> enthalten Referenzen auf die <code>output</code>-Elemente und die Daten werden als Objekt mit entsprechenden Schlüsseln übertragen, dann könnte die Funktion zur Beschaffung der Daten so ähnlich wie in dem Beispiel oben aussehen.</p> <p>Ich verwende dabei aus Gründen der besseren Lesbarkeit <a href="https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await" rel="nofollow noopener noreferrer">die <code>async</code>/<code>await</code>-Syntax</a>, bei der es sich im Prinzip nur um syntaktischen Zucker handelt. Ich denke, der Code ist auch dann nachvollziehbar, wenn man nicht das letzte Detail verstanden hat.</p> <p>Das sind alles nur Vorschläge und nicht zwingend der Weisheit letzter Schluss. Ich halte es aber für wichtig, dass die Beispiele im Wiki inklusiv sind und nicht mehr oder weniger willkürlich Benutzergruppen von der Bedienung ausgeschlossen werden. Das gilt ganz besonders für solche Artikel wie diesen, die sich eher an angehende Backend-Entwickler richten, die oft überhaupt nicht auf dem Schirm haben, dass ihr Vorgehen in dieser Hinsicht problematisch sein könnte, und die später häufig Frontend-Aufgaben übernehmen.</p> <p>Viele Grüße,</p> <p>Orlok</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758548#m1758548 TS ts-self@online.de https://bitworks.de 2019-10-09T08:11:42Z 2019-10-09T08:11:42Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hello,</p> <blockquote> <p>Hallo,</p> <blockquote> <p>Die Intention bei der Nutzung von <code><body onLoad="..."></code> war, hier in kleinsten und leicht nachvollziehbaren Schritten das mögliche Zusammenspiel von HTML und JavaScript zu demonstrieren. Deine Vorgehensweise benötigt hingegen schon wieder eine oder sogaf mehrere Wissensebenen zusätzlich.</p> </blockquote> <p>wenn man für den Zähler einen Block aus HTML-Element, Scripteinbindung und evtl. Scriptbereich zur Parametrisierung und zum Starten erstellt, kann man diesen überall, auch z.B. im zentralen Footer einbinden und benötigt keine Events mehr.</p> </blockquote> <p>Für den Zähler benötigt man nur den Scriptaufruf, hier per <img>-Element.<br> Für die "Online"-Anzeige benötigt man die Events.</p> <p>Ich schlage deshalb ja vor, dass Ihr die Alternativen erst mal fertig schreibt, zusammen mit den notwendigen Vergleichen und Erläuterungen, und wir das dann in den Artikel als Abschnitt aufnehmen.</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758549#m1758549 JürgenB https://www.j-berkemeier.de 2019-10-09T08:15:04Z 2019-10-09T08:15:04Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo Tom,</p> <blockquote> <p>Für die "Online"-Anzeige benötigt man die Events.</p> </blockquote> <p>warum?</p> <p>Gruß<br> Jürgen</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758550#m1758550 TS ts-self@online.de https://bitworks.de 2019-10-09T08:35:15Z 2019-10-09T08:35:15Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hello,</p> <blockquote> <p>Hallo Tom,</p> <blockquote> <p>Für die "Online"-Anzeige benötigt man die Events.</p> </blockquote> <p>warum?</p> </blockquote> <p>Du möchtest auf das DOM-Event verzichten, indem Du den JS-Funktionsaufruf nach allem HTML ins Dokument schreibst?</p> <p>Dass das meistens funktioniert, ist kein garantiertes Browserverhalten.</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758552#m1758552 JürgenB https://www.j-berkemeier.de 2019-10-09T08:45:25Z 2019-10-09T08:46:03Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo Tom,</p> <blockquote> <p>Du möchtest auf das DOM-Event verzichten, indem Du den JS-Funktionsaufruf nach allem HTML ins Dokument schreibst?</p> </blockquote> <p>ich stelle mir das so vor:</p> <pre><code class="block language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>body</span><span class="token punctuation">></span></span> ... <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>counter<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>img</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>img_counter<span class="token punctuation">"</span></span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/visitcount/visitcount.php<span class="token punctuation">"</span></span> <span class="token attr-name">alt</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>counter<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/visitcount/visitcount_trigger.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript"> <span class="token function">counter_refresh</span><span class="token punctuation">(</span><span class="token string">'/visitcount/visitcount.php'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span> ... <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>body</span><span class="token punctuation">></span></span> </code></pre> <p>Wobei der Aufruf von <code>counter_refresh</code> auch in <code>visitcount_trigger.js</code> erfolgen kann, und dort kann das Script auch noch den Pfad selbst ermitteln.</p> <p>Gruß<br> Jürgen</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758560#m1758560 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-09T18:03:09Z 2019-10-09T18:03:09Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <p>ich stelle mir das so vor:</p> </blockquote> <p>Wobei der Vorschlag ja jetzt noch weniger unobtrusive ist, oder nicht?</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758561#m1758561 JürgenB https://www.j-berkemeier.de 2019-10-09T18:18:04Z 2019-10-09T18:18:04Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo</p> <blockquote> <p>Wobei der Vorschlag ja jetzt noch weniger unobtrusive ist, oder nicht?</p> </blockquote> <p>warum? Nur weil html und Javscript jetzt zusammenstehen und so als Block eingebaut werden können?</p> <p>Ich lasse gerne zusammen, was zusammen gehört. Und wenn das Script hinter dem html eingebunden wird, kann auf den Loadevent-Handler verzichtet werden.</p> <p>Gruß<br> Jürgen</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758562#m1758562 Christian 2019-10-09T19:35:44Z 2019-10-09T19:35:44Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo Jürgen,</p> <blockquote> <p>Hallo</p> <blockquote> <p>Wobei der Vorschlag ja jetzt noch weniger unobtrusive ist, oder nicht?</p> </blockquote> <p>warum? Nur weil html und Javscript jetzt zusammenstehen und so als Block eingebaut werden können?</p> <p>Ich lasse gerne zusammen, was zusammen gehört. Und wenn das Script hinter dem html eingebunden wird, kann auf den Loadevent-Handler verzichtet werden.</p> <p>Gruß<br> Jürgen</p> </blockquote> <p>heißt das dann wenn man:</p> <p><div id="counter"> <img id="img_counter" src="/visitcount/visitcount.php?nowshow" alt="counter"> </div> <script src="/visitcount/visitcount_trigger.js"></script><br> <script>counter_refresh('/visitcount/visitcount.php'); </script></p> <p>in den Footer einbindet, dass dann alle Besucher auf den einzelnen HTML Seiten der Website kummuliert gezählt werden (da ja der Footer bei allen Seiten durch das php include der Gleiche ist)?</p> <p>Das wäre toll und simpel.</p> <p>Viele Grüße</p> <p>Christian</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758566#m1758566 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-09T22:45:20Z 2019-10-09T22:45:20Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <blockquote> <p>Wobei der Vorschlag ja jetzt noch weniger unobtrusive ist, oder nicht?</p> </blockquote> <p>warum? Nur weil html und Javscript jetzt zusammenstehen und so als Block eingebaut werden können?</p> </blockquote> <p>Kommt auf den Maßstab an, aber ja, wenn unobtrusive der Maßstab ist, dann ist das nicht optimal gelöst. Ob du jetzt dem onload-Attribut einen Funktionsaufruf verpasst oder hinten an den body ein <script> dranhängst bleibt sich im Endeffekt gleich - beides ist kein gutes Beispiel für unobtrusive JavaScript.</p> <p>Ja, ich stimme dir zu - wenn schon obtrusive, dann besser en block als in Einzelteilen.</p> <p>Vermutlich wäre richtig gewesen, nicht zu sagen, dass der Vorschlag noch weniger unobtrusive ist, sondern, dass der Vorschlag auch nicht näher an unobtrusive JavaScript rankommt.</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758563#m1758563 JürgenB https://www.j-berkemeier.de 2019-10-09T19:55:50Z 2019-10-09T19:55:50Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo,</p> <p>ich würde sagen, das geht so, probier es einfach mal aus. Aber genaueres weiß der Autor <a href="/users/4179" class="mention registered-user" rel="noopener noreferrer">@TS</a></p> <p>Gruß<br> Jürgen</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758564#m1758564 Christian 2019-10-09T20:29:16Z 2019-10-17T08:45:46Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo Jürgen,</p> <blockquote> <p>Hallo,</p> <p>ich würde sagen, das geht so, probier es einfach mal aus. Aber genaueres weiß der Autor <a href="/users/4179" class="mention registered-user" rel="noopener noreferrer">@TS</a></p> <p>Gruß<br> Jürgen</p> </blockquote> <p>Die Einbindung von:</p> <pre><code class="block language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>counter<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>img</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>img_counter<span class="token punctuation">"</span></span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.example.de/visitcount/visitcount.php?noshow<span class="token punctuation">"</span></span> <span class="token attr-name">alt</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>countpixel<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.example.de/visitcount/ visitcount_trigger.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript"> <span class="token function">counter_refresh</span><span class="token punctuation">(</span>http<span class="token operator">:</span><span class="token operator">/</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">www.example.de</span><span class="token regex-delimiter">/</span></span> visitcount<span class="token operator">/</span>visitcount<span class="token punctuation">.</span>php'<span class="token punctuation">)</span><span class="token punctuation">;</span> </span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span> </code></pre> <p>im Footer zu Lösung der Thematik funktioniert leider nicht </p> <p>Es wird auf der index.html immer nur ein Besucher als online angezeigt, obwohl mehrere Besucher auf der Website sind.</p> <p>Viele Grüße</p> <p>Christian</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759018#m1759018 Christian 2019-10-19T09:32:24Z 2019-10-19T09:32:24Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo nochmal,</p> <p>könnten wir noch einmal zurück auf das Problem kommen. Ich habe versucht die Erfassung der Besucher auf der Domain wie folgt zu bewerkstelligen, aber leider ohne Erfolg:</p> <blockquote> <p>Hallo Jürgen,</p> <blockquote> <p>Hallo,</p> <p>ich würde sagen, das geht so, probier es einfach mal aus. Aber genaueres weiß der Autor <a href="/users/4179" class="mention registered-user" rel="noopener noreferrer">@TS</a></p> <p>Gruß<br> Jürgen</p> </blockquote> <p>Die Einbindung von:</p> <pre><code class="block language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>counter<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>img</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>img_counter<span class="token punctuation">"</span></span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.example.de/visitcount/visitcount.php?noshow<span class="token punctuation">"</span></span> <span class="token attr-name">alt</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>countpixel<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.example.de/visitcount/ visitcount_trigger.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript"> <span class="token function">counter_refresh</span><span class="token punctuation">(</span>http<span class="token operator">:</span><span class="token operator">/</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">www.example.de</span><span class="token regex-delimiter">/</span></span> visitcount<span class="token operator">/</span>visitcount<span class="token punctuation">.</span>php'<span class="token punctuation">)</span><span class="token punctuation">;</span> </span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span> </code></pre> <p>im Footer zu Lösung der Thematik funktioniert leider nicht </p> <p>Es wird auf der index.html immer nur ein Besucher als online angezeigt, obwohl mehrere Besucher auf der Website sind.</p> <p>Viele Grüße</p> <p>Christian</p> </blockquote> <p>Die Website besteht aus DIV-Containern die teilweise per php include nachgeladen werden. Der Footer ist für alle html-Seiten deshalb der gleiche. Was müsste man nach all den Informationen dieses Threads nun machen, um alle Online Besucher auf der Domain zu erfassen. Wie gesagt, die bis dato unternommenen Versuche haben leider nicht funktioniert. Es wäre klasse wenn mir hier jemand weiterhelfen können. Auf einer CMS Website funktionert es ja auch irgendwie.</p> <p>Schon vorab vielen Dank.</p> <p>Grüße</p> <p>Christian</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758569#m1758569 JürgenB https://www.j-berkemeier.de 2019-10-10T06:32:48Z 2019-10-10T06:32:48Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo Janosch,</p> <p>ich mache „unobtrusive“ nicht daran fest, ob das Script im Head oder im Body steht. Für mich ist bei abgeschlossen Aufgaben wichtiger, das zusammenbleibt, was zusammen gehört.</p> <p>Wenn alle Scripte im Head eingebunden werden, hat man natürlich sofort einen Überblick über die Scripte, wenn man allerdings wissen will, was alles zum Seitenzähler gehört, ist die Blocklösung mMn besser, auch weil man sie als Block einfügen kann.</p> <p>Gruß<br> Jürgen</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758608#m1758608 Orlok 2019-10-10T19:52:29Z 2019-10-10T19:52:29Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo Camping_RIDER</p> <blockquote> <p>Ob du jetzt dem onload-Attribut einen Funktionsaufruf verpasst oder hinten an den body ein <script> dranhängst bleibt sich im Endeffekt gleich - beides ist kein gutes Beispiel für unobtrusive JavaScript.</p> </blockquote> <p>Im Ergebnis richtig, aber die Verwendung von <code>onload</code> ist im Vergleich viel problematischer.</p> <p>Der wesentliche Grund, der gegen die Registrierung von Eventhandlern durch Zuweisung spricht, ist die hohe Fehleranfälligkeit. Programme, die diese Technik nutzen, sind nicht robust, da immer das Risiko besteht, dass die Eigenschaft an einer anderen Stelle überschrieben wird. Das gilt natürlich besonders für das Ereignis <code>load</code>, das von vielen Skripten als Einstiegspunkt in das Programm verwendet wird.</p> <pre><code class="block bad language-html"> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>body</span> <span class="token special-attr"><span class="token attr-name">onload</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value javascript language-javascript"><span class="token function">doSomething</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span> ⋮ <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>path/to/doSomethingElse.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>html</span><span class="token punctuation">></span></span> </code></pre> <p>Wird zu einem späteren Zeitpunkt ein weiteres Skript hinzugefügt, das ebenfalls einen Handler durch Zuweisung an die Eigenschaft <code>window.onload</code> registriert, dann wird eins der beiden Programme nicht ausgeführt. Welches das ist, hängt davon ab, in welcher Reihenfolge die Handler registriert werden. Für jemanden, der sich dieser Problematik nicht bewusst ist, ist die Fehlerursache nicht unmittelbar ersichtlich, insbesondere, wenn der Fehler erst zu einem späteren Zeitpunkt bemerkt wird.</p> <p>Wenn man Eventhandler durch Eigenschaftszuweisung registriert, muss man immer genau im Blick haben, welches Skript für welches Objekt welches Event überwacht, und die konkurrierenden Zugriffe koordinieren. Das erfordert zusätzliche Logik und kann dazu führen, dass Skripte, die inhaltlich nichts miteinander zu tun haben, in Abhängigkeiten geraten. Was für manchen vielleicht zunächst wie die einfachere Lösung aussieht, ist außer in den allereinfachsten Fällen mit deutlich mehr Komplexität verbunden.</p> <pre><code class="block good language-html"> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript"> ⋮ window<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">'load'</span><span class="token punctuation">,</span> doSomething<span class="token punctuation">)</span><span class="token punctuation">;</span> </span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript"> ⋮ window<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">'load'</span><span class="token punctuation">,</span> doSomethingElse<span class="token punctuation">)</span><span class="token punctuation">;</span> </span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>html</span><span class="token punctuation">></span></span> </code></pre> <p>Die Methoden <code>addEventListener</code> und <code>removeEventListener</code> wurden eingeführt, damit sich nicht jeder seine eigene Lösung für diese Probleme stricken muss. Damit können beliebig viele Handler für dasselbe Objekt und dasselbe Ereignis registriert und wieder gelöscht werden, ohne dass es dabei zu Kollisionen kommt.</p> <p>Meiner Meinung nach sollte in Lehrbeispielen zur Behandlung von Ereignissen ausschließlich diese Methoden verwendet werden – und auch im vorliegenden Fall sehe ich keinen Grund, der dagegen sprechen würde. Es mag zwar Fälle geben, in denen eine Registrierung über Attribute oder Eigenschaften unproblematisch und vielleicht sogar sinnvoll ist, aber solche Situationen zu erkennen erfordert dann doch etwas mehr Einsicht, als von der Zielgruppe eines Tutorials erwartet werden kann.</p> <p>Viele Grüße,</p> <p>Orlok</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758626#m1758626 1unitedpower 2019-10-11T09:26:52Z 2019-10-11T09:26:52Z Verwendung Zugriffszähler mit Onlineanzeige <p>Kleiner Zusatz: Wenn man das DOM über HTML-Strings zusammenbaut, sollte man im Allgemeinen die variablen Inhalte maskieren. Das ist hier nicht zwingend notwendig, da nur Zahlen eingesetzt werden, aber besser man verlässt sich nicht darauf.</p> <pre><code class="block language-js"><span class="token comment">// Quelle: https://stackoverflow.com/questions/6234773/can-i-escape-html-special-chars-in-javascript</span> <span class="token keyword">function</span> <span class="token function">escapeHtml</span><span class="token punctuation">(</span><span class="token parameter">unsafe</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> unsafe <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">&</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&amp;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex"><</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&lt;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">></span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&gt;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">"</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&quot;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">'</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&#039;"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">const</span> <span class="token function-variable function">createCounter</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter">online<span class="token punctuation">,</span> visits</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> document<span class="token punctuation">.</span>body<span class="token punctuation">.</span><span class="token function">insertAdjacentHTML</span><span class="token punctuation">(</span> <span class="token string">'beforeend'</span><span class="token punctuation">,</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string"> <aside id="counter"> <h2>User Counter</h2> <label for="online">Online:</label> <output id="online"></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span> <span class="token function">escapeHtml</span><span class="token punctuation">(</span>online<span class="token punctuation">)</span> <span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"></output> <label for="visits">Visits:</label> <output id="visits"></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span> <span class="token function">escapeHtml</span><span class="token punctuation">(</span>visits<span class="token punctuation">)</span> <span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"></output> </aside> </span><span class="token template-punctuation string">`</span></span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>BTW: Gibt es keine native Funktion in JS, die HTML maskiert?</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759119#m1759119 marctrix self@mhis.de https://www.mhis.de 2019-10-21T20:18:52Z 2019-10-21T20:18:52Z Verwendung Zugriffszähler mit Onlineanzeige <p>Heu Orlok,</p> <p>danke für den tollen Beitrag. Aber ausnahmsweise finde ich, dass du in einem Punkt falsch liegst: Barrierefreiheit ist ein eigenes Thema.</p> <p>Hier macht es IMHO das Tutorial zu komplex.</p> <p>Oder geht nur mir das so?</p> <p>Gruß,</p> <p>Marc</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758667#m1758667 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2019-10-11T17:18:53Z 2019-10-11T17:18:53Z Verwendung Zugriffszähler mit Onlineanzeige <p>@@1unitedpower</p> <blockquote> <pre><code class="block language-js"><span class="token keyword">function</span> <span class="token function">escapeHtml</span><span class="token punctuation">(</span><span class="token parameter">unsafe</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> </code></pre> </blockquote> <p>Hm, eine globale Funktion?</p> <p>Wäre das nicht sauberer?</p> <pre><code class="block language-js"><span class="token class-name">String</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span><span class="token function-variable function">escapeHtml</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token keyword">this</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">&</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&amp;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex"><</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&lt;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">></span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&gt;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">"</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&quot;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">'</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&#039;"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>Und statt <code class="language-js"><span class="token function">escapeHtml</span><span class="token punctuation">(</span>visits<span class="token punctuation">)</span></code> dann <code class="language-js">visits<span class="token punctuation">.</span><span class="token function">escapeHtml</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code>.</p> <p>Man könnte die Methode auch <code class="language-js"><span class="token function">htmlSpecialChars</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code> nennen. </p> <p>Warum wird eigentlich das <code>></code> escapet? Ja, PHPs <code class="language-php"><span class="token function">htmlspecialchars</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code> tut das auch, aber <code>></code> ist doch kein böses Zeichen?</p> <p>LLAP </p> <div class="signature">-- <br> <em>„Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“<br> „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“</em><br> —Marc-Uwe Kling </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758671#m1758671 Orlok 2019-10-11T21:24:30Z 2019-10-11T21:24:30Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo Gunnar</p> <blockquote> <blockquote> <pre><code class="block language-js"><span class="token keyword">function</span> <span class="token function">escapeHtml</span><span class="token punctuation">(</span><span class="token parameter">unsafe</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> </code></pre> </blockquote> <p>Hm, eine globale Funktion?</p> </blockquote> <p>Ob die Funktion global, ist hängt davon ab, wo sie definiert wird. Das lässt sich ja aus dem Schnippsel nicht ableiten. Grundsätzlich ist es aber natürlich nicht falsch, auch hier über die Kapselung des Codes nachzudenken. Die einfachste Methode das Ziel zu erreichen ist wohl, nur lexikalische Deklarationen (<code>const</code> oder <code>let</code>) zu verwenden und das ganze Programm in einem Anweisungsblock auszuführen, also etwa so:</p> <pre><code class="block language-javascript"><span class="token comment">// counter.js</span> <span class="token punctuation">{</span> <span class="token keyword">const</span> <span class="token function-variable function">escapeHTML</span> <span class="token operator">=</span> <span class="token parameter">unsafe</span> <span class="token operator">=></span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span> ⋮ <span class="token keyword">const</span> <span class="token function-variable function">createCounter</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter">online<span class="token punctuation">,</span> visits</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Da es sich bei dem Besucherzähler nur um ein Komfortfeature handelt, könnte man auch darüber nachdenken, das Programm als Modul einzubinden.</p> <pre><code class="block language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>module<span class="token punctuation">"</span></span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>counter.js<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span> </code></pre> <p>Wird ein Skript auf diese Weise eingebunden, dann sind prinzipiell alle im globalen Gültigkeitsbereich vorgenommenen Deklarationen auf eben dieses Skript beschränkt. Sie leaken nicht in den Scope von anderen Modulen oder Skripten. Der Browsersupport für Module liegt heute soweit ich weiß bei über achtzig Prozent. Ich finde das ist ein Fall, wo man über die Verwendung ohne Netz und doppelten Boden nachdenken kann.</p> <blockquote> <p>Wäre das nicht sauberer?</p> <pre><code class="block language-js"><span class="token class-name">String</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span><span class="token function-variable function">escapeHtml</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token keyword">this</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">&</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&amp;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex"><</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&lt;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">></span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&gt;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">"</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&quot;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">'</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&#039;"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>Und statt <code class="language-js"><span class="token function">escapeHtml</span><span class="token punctuation">(</span>visits<span class="token punctuation">)</span></code> dann <code class="language-js">visits<span class="token punctuation">.</span><span class="token function">escapeHtml</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code>.</p> </blockquote> <p>Ich halte das Verändern von eingebauten Objekten für schlechte Praxis. Bei diesen Objekten handelt es sich um geteilte Ressourcen und wie immer in solchen Fällen muss sichergestellt werden, dass sich die Nutzer dieser Ressourcen nicht in die Quere kommen. Als Entwickler erwarte ich die eingebauten Objekte so vorzufinden, wie sie standardisiert und dokumentiert sind. Wenn jedes eingebundene Skript die eingebauten Objekte nach belieben an die eigenen Bedürfnisse anpasst, dann ist das nicht mehr gewährleistet und es ist nur eine Frage der Zeit, bis es zu unvorhersehbaren Fehlern kommt.</p> <p>Natürlich ist es unwahrscheinlich, dass ein anderes Programm ebenfalls eine Methode mit dem Namen <code>escapeHtml</code> auf <code class="language-js"><span class="token class-name">String</span><span class="token punctuation">.</span>prototype</code> definieren will und diese Methode mit deiner Definition nicht kompatibel ist. Indem du dieses eingebaute Objekt manipulierst, handelst du aber nicht nach einer Maxime von der man wollen kann, dass sie allgemeines Gesetz werde. Es ist meiner Meinung nach eine gute Konvention, die gemeinsam genutzten Objekte nicht zu verändern.</p> <p>Wenn man Standardobjekte unbedingt anpassen möchte, dann ist die bessere Vorgehensweise, eine von dem jeweiligen Typ abgeleitete Klasse zu erstellen. Im vorliegenden Fall ist das zwar nicht wirklich praktikabel, da es sich bei Strings nicht um Objekte sondern um einen primitiven Datentyp handelt, und wir die Werte darüber hinaus auch nicht selbst produzieren, aber in vielen Fällen erreicht man damit sein Ziel, ohne dabei die Ausführung von anderen Programmen zu gefährden.</p> <p>Viele Grüße,</p> <p>Orlok</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758693#m1758693 1unitedpower 2019-10-12T13:37:31Z 2019-10-12T13:37:31Z Verwendung Zugriffszähler mit Onlineanzeige <blockquote> <p>Wäre das nicht sauberer?</p> </blockquote> <p>So ist die Funktion ebenfalls global, weil <code>String</code> schon global ist. Ich schließe mich Orlok an, ich erweitere fremde Objekte nur ungern und würde das eher mit einem Modul lösen.</p> <blockquote> <p>Man könnte die Methode auch <code class="language-js"><span class="token function">htmlSpecialChars</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code> nennen. </p> </blockquote> <p>Das dürfte dann vielen Lesern aus PHP schon bekannt sein. Für sich genommen finde ich den Namen aber eher unglücklich.</p> <blockquote> <p>Warum wird eigentlich das <code>></code> escapet? Ja, PHPs <code class="language-php"><span class="token function">htmlspecialchars</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code> tut das auch, aber <code>></code> ist doch kein böses Zeichen?</p> </blockquote> <p>In <a href="https://html.spec.whatwg.org/multipage/parsing.html#attribute-value-(unquoted)-state" rel="nofollow noopener noreferrer">unquoted Attributes</a> schon. Dürfte aber ein sehr seltener Fall sein.</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1758696#m1758696 Orlok 2019-10-12T14:38:14Z 2019-10-12T14:38:14Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo Ingrid</p> <blockquote> <blockquote> <p>Wäre das nicht sauberer?</p> <pre><code class="block language-js"><span class="token class-name">String</span><span class="token punctuation">.</span>prototype<span class="token punctuation">.</span><span class="token function-variable function">escapeHtml</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token keyword">this</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">&</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&amp;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex"><</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&lt;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">></span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&gt;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">"</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&quot;"</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">'</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">"&#039;"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>Und statt <code class="language-js"><span class="token function">escapeHtml</span><span class="token punctuation">(</span>visits<span class="token punctuation">)</span></code> dann <code class="language-js">visits<span class="token punctuation">.</span><span class="token function">escapeHtml</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code>.</p> </blockquote> <p>Ich halte das Verändern von eingebauten Objekten für schlechte Praxis.</p> </blockquote> <p>Davon abgesehen, gibt es hier eine viel schönere Lösung.</p> <p>Wenn wir Werte in ein Templateliteral einfügen, die escaped werden müssen, dann wollen wir die entsprechende Funktion doch eigentlich nicht für jeden dieser Werte einzeln aufrufen, egal ob als Funktions- oder als Methodenaufruf. Denn zum einen sind wir faul und zum anderen besteht dabei das Risiko, dass wir vergessen, einen der Werte zu escapen.</p> <p>Wir könnten natürlich vor dem Zusammenbau über die Werte iterieren, aber das wäre unnötig umständlich. Außerdem ist der richtige Zeitpunkt für die kontextgerechte Behandlung, wenn die Werte in den neuen Kontext eingebracht werden.</p> <p>Die schönere Lösung besteht darin, ein <em lang="en">Tagged Template</em> zu verwenden:</p> <pre><code class="block language-javascript"><span class="token keyword">const</span> <span class="token function-variable function">createCounter</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter">online<span class="token punctuation">,</span> visits</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> document<span class="token punctuation">.</span>body<span class="token punctuation">.</span><span class="token function">insertAdjacentHTML</span><span class="token punctuation">(</span> <span class="token string">'beforeend'</span><span class="token punctuation">,</span> escapeHTML<span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string"> <aside id="counter"> <h2>User Counter</h2> <label for="online">Online:</label> <output id="online"></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span> online <span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"></output> <label for="visits">Visits:</label> <output id="visits"></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span> visits <span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"></output> </aside> </span><span class="token template-punctuation string">`</span></span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>Wird wie oben direkt vor dem Templateliteral ein <em>Tag</em> in Form einer Funktionsreferenz notiert, dann werden die innerhalb des Templates notierten Ausdrücke zwar ausgewertet, aber der String wird nicht konkateniert. Stattdessen wird die angegebene Funktion mit den Teilzeichenketten des Templatestrings und den ermittelten Werten als Argument aufgerufen. Was von der Funktion zurückgegeben wird ist dann das Ergebnis des Ausdrucks.</p> <p>Betrachten wir zunächst ein einfacheres Beispiel:</p> <pre><code class="block language-javascript"><span class="token keyword">const</span> <span class="token function-variable function">square</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter"><span class="token punctuation">[</span>_before<span class="token punctuation">,</span> operator<span class="token punctuation">,</span> _after<span class="token punctuation">]</span><span class="token punctuation">,</span> a<span class="token punctuation">,</span> b</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>a<span class="token operator">**</span><span class="token number">2</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>operator<span class="token interpolation-punctuation punctuation">}</span></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>b<span class="token operator">**</span><span class="token number">2</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token keyword">const</span> expression <span class="token operator">=</span> square<span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token number">2</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> + </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token number">3</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>expression<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// "4 + 9"</span> </code></pre> <p>Die Funktion <code>square</code> wird hier mit drei Argumenten aufgerufen. Das erste Argument ist ein Array, das die Teilstrings enthält. Die beiden anderen Argumente sind die Werte der Ausdrücke, die in dem Templateliteral notiert wurden. Ich destrukturiere hier das Array mit den Teilstrings, um an die Zeichenkette mit dem Operator zu kommen. Am Ende wird der Ausdruck mit den veränderten Werten neu zusammengesetzt.</p> <p>Hier sollte zwei Aspekten besondere Aufmerksamkeit geschenkt werden:</p> <ol> <li> <p>In dem Ausdruck <code class="language-js">square<span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token number">2</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> + </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token number">3</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span></code> scheint der Templatestring mit einem Platzhalter zu beginnen und mit einem Platzhalter zu enden. Das ist aber nicht richtig. Ein Template beginnt und endet immer mit einem String – in diesem Fall dem leeren String.</p> </li> <li> <p>Die Gesamtzahl der Argumente mit denen die Funktion aufgerufen wird hängt davon ab, wieviele Ausdrücke in dem Template notiert wurden. In diesem Beispiel ist die Anzahl der Ausdrücke bekannt, weshalb wir einzeln benannte Parameter verwenden können.</p> </li> </ol> <p>Wenn es wie in unserem Anwendungsfall darum geht, prinzipiell beliebig lange Zeichenketten mit beliebig vielen Platzhaltern zu verarbeiten, dann können wir uns die Erkenntnis zu nutze machen, dass die Anzahl der Teilstrings genau um eins größer ist als die Anzahl der variablen Werte, die in das Template eingefügt wurden.</p> <p>Die Funktionssignatur könnte demnach wiefolgt aussehen:</p> <pre><code class="block language-javascript"><span class="token keyword">const</span> <span class="token function-variable function">escapeHTML</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter"><span class="token punctuation">[</span>x<span class="token punctuation">,</span> <span class="token operator">...</span>xs<span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token operator">...</span>unsafe</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>Wir destrukturieren wieder das Array mit den Teilstrings. Dabei teilen wir unter Verwendung der Restsyntax die Liste der Strings in <em lang="en">head</em> und <em lang="en">tail</em>. Die zu escapenden Werte, deren Anzahl wir nicht kennen, werden ebenfalls mittels Restsyntax einem Array hinzugefügt.</p> <p>Wir könnten nun den ersten Teilstring <code>x</code> als Rückgabewert nehmen und mit einer Schleife über die beiden Arrays iterieren, wobei wir die unsicheren Werte escapen und sie zusammen mit dem jeweils nachfolgenden Teilstring ans Ende von <code>x</code> anfügen. Ich finde es allerdings schöner, hierfür die Methode <code>reduce</code> zu verwenden.</p> <pre><code class="block language-javascript"><span class="token keyword">const</span> <span class="token function-variable function">escapeHTML</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter"><span class="token punctuation">[</span>x<span class="token punctuation">,</span> <span class="token operator">...</span>xs<span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token operator">...</span>unsafe</span><span class="token punctuation">)</span> <span class="token operator">=></span> xs<span class="token punctuation">.</span><span class="token function">reduce</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">accumulator<span class="token punctuation">,</span> safe<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>accumulator<span class="token interpolation-punctuation punctuation">}</span></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span> <span class="token function">String</span><span class="token punctuation">(</span>unsafe<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">&</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">'&amp;'</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex"><</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">'&lt;'</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">></span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">'&gt;'</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">"</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">'&quot;'</span><span class="token punctuation">)</span> <span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">'</span><span class="token regex-delimiter">/</span><span class="token regex-flags">g</span></span><span class="token punctuation">,</span> <span class="token string">'&apos;'</span><span class="token punctuation">)</span> <span class="token interpolation-punctuation punctuation">}</span></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>safe<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">,</span> x<span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Wir rufen <code>reduce</code> auf dem Array mit den restlichen Teilstrings auf, wobei wir den ersten Teilstring als Initialwert übergeben. Unser <em lang="en">Reducer</em> ist eine Funktion die drei Argumente entgegennimmt. Das erste Argument ist der Akkumulator – beim ersten Aufruf der Initialwert, bei allen weiteren Aufrufen der Rückgabewert der Funktion. Das zweite Argument ist der Teilstring, der dem zu escapenden Wert nachfolgt. Das dritte und letzte Argument ist der Index.</p> <p>Wir greifen in jedem Aufruf mit dem Index auf das Array mit den zu escapenden Werten zu. Da wir nicht wissen, ob es sich bei dem Wert wirklich um einen String handelt und wir Typfehler vermeiden wollen, casten wir den Wert, bevor wir die Methode <code>replace</code> aufrufen. Schließlich verwenden wir wieder ein Templateliteral, um den bereits verarbeiteten String, den escapeten Wert und den nächsten Teilstring zusammenzufügen.</p> <p>Das Ergebnis ist dann das ursprüngliche Template mit allen Werten kontextgerecht escaped.</p> <p>Viele Grüße,</p> <p>Orlok</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759022#m1759022 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-19T16:10:22Z 2019-10-19T16:10:22Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <blockquote> <p>Es wird auf der index.html immer nur ein Besucher als online angezeigt, obwohl mehrere Besucher auf der Website sind.</p> </blockquote> <p>Die Website besteht aus DIV-Containern die teilweise per php include nachgeladen werden. Der Footer ist für alle html-Seiten deshalb der gleiche. Was müsste man nach all den Informationen dieses Threads nun machen, um alle Online Besucher auf der Domain zu erfassen.</p> </blockquote> <p>Nun, genau das, was du schon (fruchtlos) versucht hast: den Skriptaufruf und das Bild in den gemeinsamen Footer packen. Die grundsätzliche Einbindung ist richtig vorgenommen. Also steckt das Problem irgendwo im Detail.</p> <p>Ich kann ja mal ein wenig spekulieren. Das php-Skript is es nicht. Das hast du vermutlich unverändert übernommen und es funktioniert ja auch, denn du bekommst ja eine Anzeige zurück. Dass das php-Skript keine Fehler enthält will ich mal grundsätzlich annehmen, ohne das im Detail geprüft zu haben.</p> <p>Bleibt also als mögliche Ursache ein Fehler beim JavaScript-Aufruf. Was sagt denn <a href="https://wiki.selfhtml.org/wiki/JavaScript/Tutorials/Einstieg/Debuggen#Kontrollausgabe_mit_der_Konsole" rel="nofollow noopener noreferrer">deine Konsole?</a></p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759031#m1759031 Christian 2019-10-19T21:58:23Z 2019-10-19T21:58:23Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo,</p> <blockquote> <p>Aloha ;)</p> <blockquote> <blockquote> <p>Es wird auf der index.html immer nur ein Besucher als online angezeigt, obwohl mehrere Besucher auf der Website sind.</p> </blockquote> <p>Die Website besteht aus DIV-Containern die teilweise per php include nachgeladen werden. Der Footer ist für alle html-Seiten deshalb der gleiche. Was müsste man nach all den Informationen dieses Threads nun machen, um alle Online Besucher auf der Domain zu erfassen.</p> </blockquote> <p>Nun, genau das, was du schon (fruchtlos) versucht hast: den Skriptaufruf und das Bild in den gemeinsamen Footer packen. Die grundsätzliche Einbindung ist richtig vorgenommen. Also steckt das Problem irgendwo im Detail.</p> <p>Ich kann ja mal ein wenig spekulieren. Das php-Skript is es nicht. Das hast du vermutlich unverändert übernommen und es funktioniert ja auch, denn du bekommst ja eine Anzeige zurück. Dass das php-Skript keine Fehler enthält will ich mal grundsätzlich annehmen, ohne das im Detail geprüft zu haben.</p> <p>Bleibt also als mögliche Ursache ein Fehler beim JavaScript-Aufruf. Was sagt denn <a href="https://wiki.selfhtml.org/wiki/JavaScript/Tutorials/Einstieg/Debuggen#Kontrollausgabe_mit_der_Konsole" rel="nofollow noopener noreferrer">deine Konsole?</a></p> <p>Grüße,</p> <p>RIDER</p> </blockquote> <p>Hier kommt in der Tat ein ReferenceError: pic_source is not defined Fehler in der folgenden js Datei:</p> <p>function counter_refresh(pic_source)</p> <p>{</p> <pre><code>var pic = document.getElementById('img_counter'); var jetzt = new Date(); if(pic) { pic.src = pic_source + '?time=' + jetzt.getTime(); window.setTimeout("counter_refresh(pic_source)",30000); } </code></pre> <p>}</p> <p>Wie könnte man dies bereinigen?</p> <p>Grüße</p> <p>Christian</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759032#m1759032 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-19T22:17:49Z 2019-10-19T22:17:49Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <p>Wie könnte man dies bereinigen?</p> </blockquote> <p>Statt pic_source einfach die Bild-URL wie im HTML angegeben einsetzen.</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759036#m1759036 Christian 2019-10-20T08:34:53Z 2019-10-20T08:34:53Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo,</p> <p>dies müsste dann so aussehen, oder?:</p> <pre><code class="block">function counter_refresh(http://www.example.de/visitcount/1pix.gif) { var pic = document.getElementById('img_counter'); var jetzt = new Date(); if(pic) { pic.src = http://www.example.de/visitcount/1pix.gif + '?time=' + jetzt.getTime(); window.setTimeout("counter_refresh(http://www.example.de/visitcount/1pix.gif)",30000); } } </code></pre> <p>Es wird aber dann folgender Fehler angezeigt:</p> <p>SyntaxError: missing ) after formal parameters</p> <p>Passt das mit der Bild-URL so und warum kommt nun ein erneuter Debugging Fehler?</p> <p>Grüße</p> <p>Christian</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759050#m1759050 Christian 2019-10-20T14:37:29Z 2019-10-20T14:37:29Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo,</p> <p>ich möchte noch einmal von hier starten:</p> <blockquote> <p>Aloha ;)</p> <blockquote> <p>Wie könnte man dies bereinigen?</p> </blockquote> <p>Statt pic_source einfach die Bild-URL wie im HTML angegeben einsetzen.</p> <p>Grüße,</p> <p>RIDER</p> </blockquote> <p>Ich denke, dass wir uns nun wieder von der Lösung entfernt haben. Grundsätzlich hat es ja geheißen das der Script passt und man sollte nur statt pic_source die Bild URL http://www.example.de/visitcount/1pix.gif einsetzen. Das hatte ich gemacht und damit einen Fehler generiert. Hier ist die Frage was ggf. nicht stimmt. Derzeit bin ich nur am weiteren modifizieren des Scripts (was ja eigentlich nicht notwendig ist/war).</p> <p>Auch noch zur Info. Im <body> steht ebenfalls noch, obwohl der Script nun über den footer include laufen soll:</p> <p><body onLoad="counter_refresh('http://www.example.de/visitcount/visitcount.php');"></p> <p>Wäre echt super wenn wir dies gelöst bekommen.</p> <p>Tausend Dank.</p> <p>Christian</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759040#m1759040 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-20T09:08:48Z 2019-10-20T09:08:48Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <p>Passt das mit der Bild-URL so und warum kommt nun ein erneuter Debugging Fehler?</p> </blockquote> <p>Dir fehlen mindestens String-Delimiter für die URL. Dass dir das selbst nicht auffällt verstehe ich als Zeichen dafür, dass du die Grundlagen nicht beherrscht. Die wären aber zwingende Voraussetzung.</p> <p>Sofern du nicht selbst an fundiertem Grundlagenwissen arbeitest kann dir in Folge leider auch hier niemand helfen.</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759043#m1759043 Christian 2019-10-20T11:13:35Z 2019-10-20T11:13:35Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo,</p> <p>hatte ich gar nicht im Blick. Bitte jetzt noch einmal draufschauen. Debugging Fehler sind nun damit weg:</p> <pre><code class="block">function counter_refresh(pic_source) { return pic_source; var pic = document.getElementById('img_counter'); var jetzt = new Date(); if(pic) { counter_refresh ("http://www.example.de/visitcount/1pix.gif"); // "pic_source" pic.src = pic_source + '?time=' + jetzt.getTime(); window.setTimeout("counter_refresh(http://www.example.de/visitcount/1pix.gif)",30000); } } </code></pre> <p>Trotzdem wird nun immer noch nur ein Besucher als online angezeigt.</p> <p>Grüße</p> <p>Christian</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759044#m1759044 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2019-10-20T11:25:03Z 2019-10-20T11:25:03Z Verwendung Zugriffszähler mit Onlineanzeige <p>@@Christian</p> <blockquote> <pre><code class="block">function counter_refresh(pic_source) { return pic_source; </code></pre> </blockquote> <p>Der darauf folgende Code wird nie ausgeführt. [<a href="https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/return" rel="nofollow noopener noreferrer">MDN</a>]</p> <p>LLAP </p> <div class="signature">-- <br> <em>„Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“<br> „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“</em><br> —Marc-Uwe Kling </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759046#m1759046 Christian 2019-10-20T11:58:08Z 2019-10-20T11:58:08Z Verwendung Zugriffszähler mit Onlineanzeige <p>o.k., wie kommt man dann von pic_source auf das image http://www.example.de/visitcount/1pix.gif zum Zählen aller Besucher die Online sind?</p> <p>Viele Grüße</p> <p>Christian</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759047#m1759047 Matthias Apsel matthias.apsel@selfhtml.org https://brückentage.info 2019-10-20T12:20:07Z 2019-10-20T12:20:07Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo Christian,</p> <blockquote> <p>o.k., wie kommt man dann von pic_source auf das image http://www.example.de/visitcount/1pix.gif zum Zählen aller Besucher die Online sind?</p> </blockquote> <p>Beschäftige dich mit den Grundlagen, insbesondere damit, was <code>return</code> tut.</p> <p>Bis demnächst<br> Matthias</p> <div class="signature">-- <br> Pantoffeltierchen haben keine Hobbys.<br> ¯\_(ツ)_/¯ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759064#m1759064 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-20T19:05:21Z 2019-10-20T19:05:21Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <p>ich möchte noch einmal von hier starten:</p> </blockquote> <p>Du glaubst also, dass das öffnen weiterer Teilthreads magischer Weise dafür sorgt, dass die Voraussetzung, dass du die Grundlagen verstanden haben musst, nicht mehr gilt?</p> <blockquote> <p>Grundsätzlich hat es ja geheißen das der Script passt und man sollte nur statt pic_source die Bild URL http://www.example.de/visitcount/1pix.gif einsetzen. Das hatte ich gemacht und damit einen Fehler generiert.</p> </blockquote> <p>Ja.</p> <blockquote> <p>Hier ist die Frage was ggf. nicht stimmt.</p> </blockquote> <p>Du hattest es falsch eingesetzt. Was du wüsstest, wenn du dich jemals mit JavaScript beschäftigt hättest statt einfach davon auszugehen, dass es dir schon entweder zufliegt oder jemand anderes erledigt.</p> <blockquote> <p>Wäre echt super wenn wir dies gelöst bekommen.</p> </blockquote> <p>Wäre echt super, wenn du die Ratschläge, die dir gegeben werden (nämlich die mit den Grundlagen) ernst nehmen würdest.</p> <p>Das scheint leider nicht der Fall zu sein.</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759129#m1759129 1unitedpower 2019-10-22T09:47:03Z 2019-10-22T09:57:59Z Verwendung Zugriffszähler mit Onlineanzeige <blockquote> <p>Hier macht es IMHO das Tutorial zu komplex.</p> </blockquote> <p>Das hat sich inzwischen glaube ich sowieso erledigt, der Artikel wurde auf Wunsch des Autors aus dem Wiki gelöscht.</p> <p>Ich habe zu Hause noch einen fast fertigen Artikel über einen Datenbank-basierten Online-Zähler rumfliegen. Wenn Interesse besteht, könnt ihr den gerne als Basis für einen Ersatz benutzen. Es müsste sich aber jemand finden, der den Artikel von Markdown in die Wiki-Syntax übersetzt. Wenn ich wieder zu Hause bin, stell ich ihn einfach mal ins Forum.</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759151#m1759151 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2019-10-23T07:15:33Z 2019-10-23T08:06:51Z Verwendung Zugriffszähler mit Onlineanzeige <p>@@marctrix</p> <blockquote> <p>Aber ausnahmsweise finde ich, dass du in einem Punkt falsch liegst: Barrierefreiheit ist ein eigenes Thema.</p> </blockquote> <p><em lang="fr">Au contraire, mon capitaine!</em></p> <p>Barrierefreiheit ist nichts, was man später (eventuell) hinzufügen könnte.</p> <p>Und wenn du jemandem die Kurzantwort auf seine Frage hinwirfst und Barrierefreiheit als „ein eigenes Thema“ abhandeln willst, wird derjenige dem Link dahin noch folgen oder sich mit der Kurzantwort zufriedengeben?</p> <blockquote> <p>Hier macht es IMHO das Tutorial zu komplex.</p> </blockquote> <p>Nicht komplexer als nötig. Aber auch nicht weniger komplex als nötig.</p> <blockquote> <p>Oder geht nur mir das so?</p> </blockquote> <p>Mag sein, dass es anderen Lesern auch so geht. Aber: Gib Nutzern (Lesern) nicht das, was sie wollen, sondern das, was sie brauchen! (<a href="https://twitter.com/g16n/status/1184496553928593409" rel="nofollow noopener noreferrer">Déjà-vu</a>)</p> <p>LLAP </p> <div class="signature">-- <br> <em>„Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“<br> „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“</em><br> —Marc-Uwe Kling </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759130#m1759130 Matthias Scharwies mscharwies@selfhtml.org 2019-10-22T13:17:59Z 2019-10-22T13:17:59Z Verwendung Zugriffszähler mit Onlineanzeige <p>Servus!</p> <blockquote> <p>Ich habe zu Hause noch einen fast fertigen Artikel über einen Datenbank-basierten Online-Zähler rumfliegen. Wenn Interesse besteht, könnt ihr den gerne als Basis für einen Ersatz benutzen. Es müsste sich aber jemand finden, der den Artikel von Markdown in die Wiki-Syntax übersetzt. Wenn ich wieder zu Hause bin, stell ich ihn einfach mal ins Forum.</p> </blockquote> <p>So oder so. Vielen Dank im Voraus!</p> <p>Herzliche Grüße</p> <p>Matthias Scharwies</p> <div class="signature">-- <br> 25 Jahre SELFHTML → <strong><a href="https://forum.selfhtml.org/events/4" rel="noopener noreferrer">SELF-Treffen 05.-07. Juni 2020</a></strong> in <strong>Mannheim</strong> </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759184#m1759184 marctrix self@mhis.de https://www.mhis.de 2019-10-24T06:46:04Z 2019-10-24T06:46:04Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hej Gunnar,</p> <blockquote> <p>@@marctrix</p> <blockquote> <p>Aber ausnahmsweise finde ich, dass du in einem Punkt falsch liegst: Barrierefreiheit ist ein eigenes Thema.</p> </blockquote> <p><em lang="fr">Au contraire, mon capitaine!</em></p> <p>Barrierefreiheit ist nichts, was man später (eventuell) hinzufügen könnte.</p> </blockquote> <p>Darum ging es mir nicht. Man kann Barrierefreiheit tatsächlich (oft) nicht nachträglich hinzufügen, aber man kann zwei Themen getrennt voneinander erklären.</p> <p>Wenn ich jemandem das Gaspedal erkläre, sage ich auch nicht ständig, wo man langsam fahren muss. Das erkläre ich einer zusammenhängenden eigenen Unterrichtseinheit.</p> <p>Marc</p> <div class="signature">-- <br> Ceterum censeo Google esse delendam </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759186#m1759186 marctrix self@mhis.de https://www.mhis.de 2019-10-24T07:33:52Z 2019-10-24T07:33:52Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hej Gunnar,</p> <blockquote> <blockquote> <p>@@marctrix</p> </blockquote> </blockquote> <blockquote> <p>Wenn ich jemandem das Gaspedal erkläre, sage ich auch nicht ständig, wo man langsam fahren muss. Das erkläre ich einer zusammenhängenden eigenen Unterrichtseinheit.</p> </blockquote> <p>Programmierung und Barrierefreiheit sind zwei besonders weit voneinander entfernte Themen.</p> <p>Meiner Meinung nach sollte ein Frontender vorgeben (jemand, der Design in zugängliches, performantes, suchmaschinenfreundliches CSS/SASS und HTML umsetzt), wie die Ausgabe aussehen soll.</p> <p>Wenn jeder alles wissen muss, dann kommt am Ende Müll raus oder wir lernen mehr, als wir umsetzen. Beides ist schlecht.</p> <p>Marc</p> <div class="signature">-- <br> Ceterum censeo Google esse delendam </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759190#m1759190 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2019-10-24T08:31:23Z 2019-10-24T08:31:23Z Verwendung Zugriffszähler mit Onlineanzeige <p>@@marctrix</p> <blockquote> <p>aber man kann zwei Themen getrennt voneinander erklären.</p> </blockquote> <p>Da glaube ich nicht dran. Die meisten Entwickler werden dann nur den einen Artikel lesen, nicht den zweiten über Barrierefreiheit. Man muss sie schon dazu zwingen, die barrierefreie Umsetzung mitzulesen.</p> <p>Ein <strong>Tutorial</strong> soll umfassend alle notwendigen Aspekte beleuchten. Ansonsten ist es kein Tutotial.</p> <p>LLAP </p> <div class="signature">-- <br> <em>„Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“<br> „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“</em><br> —Marc-Uwe Kling </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759211#m1759211 marctrix self@mhis.de https://www.mhis.de 2019-10-24T16:14:31Z 2019-10-24T16:14:31Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hej Gunnar,</p> <blockquote> <p>@@marctrix</p> </blockquote> <blockquote> <p>Man muss sie schon dazu zwingen, die barrierefreie Umsetzung mitzulesen.</p> </blockquote> <p>In den vielen, vielen Kursen, die ich inzwischen gegeben habe, kann ich dir versichern: das ist ein Wunschtraum.</p> <p>Wenn das Tutorial zu lang und scheinbar irrelevant ist, gehen die User nächstes mal zu stackoverflow, fürchte ich.</p> <p>Dennoch sollte das kopierfähige Ergebnis zugänglich sein. Aber die Erklärung würde ich persönlich weglassen.</p> <p>Marc</p> <div class="signature">-- <br> Ceterum censeo Google esse delendam </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759213#m1759213 JürgenB https://www.j-berkemeier.de 2019-10-24T16:29:42Z 2019-10-24T16:29:42Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo Marc,</p> <blockquote> <p>Dennoch sollte das kopierfähige Ergebnis zugänglich sein. Aber die Erklärung würde ich persönlich weglassen.</p> </blockquote> <p>d.h. die Leute bauen zugängliche Seiten und merken es garnicht </p> <p>Gruß<br> Jürgen</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759303#m1759303 marctrix self@mhis.de https://www.mhis.de 2019-10-26T17:23:18Z 2019-10-26T17:24:16Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hej JürgenB,</p> <blockquote> <blockquote> <p>Dennoch sollte das kopierfähige Ergebnis zugänglich sein. Aber die Erklärung würde ich persönlich weglassen.</p> </blockquote> <p>d.h. die Leute bauen zugängliche Seiten und merken es garnicht </p> </blockquote> <p>Genau. Es spricht doch gar nichts dagegen, wenn ein Tutorial erklärt, wie man Besucher zählt und die Ausgabe lautet:</p> <blockquote> <p><em>Heute waren n Besucher auf dieser Website, derzeit sind mit Ihnen zusammen x weitere Besucher hier. Insgesamt wurden y Besucher gezählt.</em></p> </blockquote> <p>Kein Bild, kein Problem.</p> <p>Wie das hübsch gemacht wird erfährt man dann in einem Tutorial über Schriftformatierung oder (wenn nicht vorhanden) es werden zwei drei Links zum Wiki für die weitere Lektüre hinzugefügt (das könnte Sie auch interessieren).</p> <p>Natürlich auch zu einem Artikel über JavaScript und Sicherheit oder Barrierfreiheit.</p> <p>Man sollte sich vor der Erstellung eines Tutorials klar machen, was gelehrt werden soll und dann genau diesen einen Aspekt ausführlich behandeln. Und sonst nichts.</p> <p>Sonst muss ja jedes Tutorial alles erklären.</p> <p>Just my 2 Cents…</p> <p>Marc</p> <div class="signature">-- <br> Ceterum censeo Google esse delendam </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759308#m1759308 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-26T18:04:25Z 2019-10-26T18:04:25Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <p>Man sollte sich vor der Erstellung eines Tutorials klar machen, was gelehrt werden soll und dann genau diesen einen Aspekt ausführlich behandeln. Und sonst nichts.</p> <p>Sonst muss ja jedes Tutorial alles erklären.</p> </blockquote> <p>Genau das! Lernziele festlegen! Didaktische Reduktion überall anders!</p> <p>Ein Tutorial soll grundsätzlich ein barrierefreies Ergebnis liefern, aber nicht unbedingt explizit erläutern, dass das gemacht wird, und warum das so gemacht wird - außer eben das gehört explizit zu den Lernzielen des Tutorials.</p> <p>Besonders elegant ist es dann, am Ende des Tutorials darauf hinzuweisen: <em>Und wenn sie sich jetzt fragen, warum wir [xyz] so gemacht haben und nicht anders, dann lesen sie hier...</em></p> <p>TL;DR: Alles richtig machen, ja! Alles erläutern, nein.</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759333#m1759333 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2019-10-27T04:41:50Z 2019-10-27T04:50:06Z Verwendung Zugriffszähler mit Onlineanzeige <p>@@marctrix</p> <blockquote> <p>Tutorial […] Natürlich auch zu einem Artikel über JavaScript und Sicherheit oder Barrierfreiheit.</p> </blockquote> <p>Hier steckt der Fehler! Ein <strong>Tutorial</strong> kann kein Artikel über JavaScript sein. Oder Sicherheit. Oder Barriere­freiheit.</p> <blockquote> <p>Man sollte sich vor der Erstellung eines Tutorials klar machen, was gelehrt werden soll</p> </blockquote> <p>Ja!! Aber …</p> <blockquote> <p>und dann genau diesen einen Aspekt ausführlich behandeln. Und sonst nichts.</p> </blockquote> <p>Der Aspekt eines Tutorials ist nicht Technologie <em>X</em> (bspw. ein bestimmtes JavaScript-Feature). Und Technologien <em>Y</em> und <em>Z</em> (z.B. semantisches HTML und ARIA) werden nicht behandelt. Das wäre dann kein Tutorial, sondern eine Dokumentation eines JavaScript-Features.</p> <p>Der Aspekt eines Tutorials ist eine bestimmte <strong>Komponente</strong> (bspw. Wie baut man ein Aufklapp­menü?). Lernziel des Tutorials sind die Teile der Technologien <em>X</em>, <em>Y</em> <strong>und</strong> <em>Z</em>, die zur Umsetzung dieser Komponente erforderlich sind. Das sind bei einem Aufklapp­menü die HTML-Elemente <code>nav</code>, <code>ul</code> bzw. <code>ol</code>, <code>li</code>, <code>a</code> und <code>button</code>; etwas CSS; etwas JavaScript und das <code>aria-expanded</code>-Attribut, evtl. auch <code>aria-controls</code>.</p> <p>Und schon ist Barriere­freiheit mit drin, ohne dass es den Rahmen eines Tutorials sprengen würde.</p> <p>LLAP </p> <div class="signature">-- <br> <em>„Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“<br> „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“</em><br> —Marc-Uwe Kling </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759311#m1759311 Der Martin 2019-10-26T18:17:12Z 2019-10-26T18:17:12Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo Janosch,</p> <blockquote> <blockquote> <p>Man sollte sich vor der Erstellung eines Tutorials klar machen, was gelehrt werden soll und dann genau diesen einen Aspekt ausführlich behandeln. Und sonst nichts.</p> <p>Sonst muss ja jedes Tutorial alles erklären.</p> </blockquote> <p>Genau das! Lernziele festlegen! Didaktische Reduktion überall anders!</p> </blockquote> <p>... sagt der Pädagoge. ;-)</p> <blockquote> <p>Ein Tutorial soll grundsätzlich ein barrierefreies Ergebnis liefern, aber nicht unbedingt explizit erläutern, dass das gemacht wird, und warum das so gemacht wird - außer eben das gehört explizit zu den Lernzielen des Tutorials.</p> </blockquote> <p>Das ist aber genau die Lehr- und Lernmethode, die bei mir regelmäßig Frust erzeugt, weil Fragen offen bleiben. Das war schon zur Schulzeit so. Für meine Lernstrategie ist es wichtig, dass ein Tutorial die bewusst weggelassenen Inhalte zumindest benennt und weiterführende Quellen für Interessierte angibt.</p> <blockquote> <p>Besonders elegant ist es dann, am Ende des Tutorials darauf hinzuweisen: <em>Und wenn sie sich jetzt fragen, warum wir [xyz] so gemacht haben und nicht anders, dann lesen sie hier...</em></p> </blockquote> <p>Ich finde das nicht "besonders elegant", sondern eine elementare Forderung.</p> <blockquote> <p>TL;DR: Alles richtig machen, ja! Alles erläutern, nein.</p> </blockquote> <p>Einverstanden. Aber dann zumindest zeigen, wo's weitergeht.</p> <p>Schönes Wochenende,<br>  Martin</p> <div class="signature">-- <br> "Wenn man ein Proton aufmacht, sind drei Quarks drin."<br> - <a href="https://de.wikipedia.org/wiki/Joachim_Bublath" rel="nofollow noopener noreferrer">Joachim Bublath</a> in der <a href="https://de.wikipedia.org/wiki/Die_Knoff-Hoff-Show" rel="nofollow noopener noreferrer">Knoff-Hoff-Show</a> </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759318#m1759318 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-26T18:29:47Z 2019-10-26T18:29:47Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <blockquote> <p>Ein Tutorial soll grundsätzlich ein barrierefreies Ergebnis liefern, aber nicht unbedingt explizit erläutern, dass das gemacht wird, und warum das so gemacht wird - außer eben das gehört explizit zu den Lernzielen des Tutorials.</p> </blockquote> <p>Das ist aber genau die Lehr- und Lernmethode, die bei mir regelmäßig Frust erzeugt, weil Fragen offen bleiben. Das war schon zur Schulzeit so. Für meine Lernstrategie ist es wichtig, dass ein Tutorial die bewusst weggelassenen Inhalte zumindest benennt und weiterführende Quellen für Interessierte angibt.</p> </blockquote> <p>Verständlich, wobei du damit in meiner Erfahrung eher in der Minderheit bist. Mir gehts übrigens ähnlich.</p> <blockquote> <blockquote> <p>Besonders elegant ist es dann, am Ende des Tutorials darauf hinzuweisen: <em>Und wenn sie sich jetzt fragen, warum wir [xyz] so gemacht haben und nicht anders, dann lesen sie hier...</em></p> </blockquote> <p>Ich finde das nicht "besonders elegant", sondern eine elementare Forderung.</p> </blockquote> <p>Nein, sehe ich nicht so. Es ist okay, dass dich das fuchst, falls das Sahnehäubchen fehlt, dass dich auch noch auf den letzten Rest fehlenden Wissens hinweist. Trotzdem hast du dann verstanden, wie man (um im Beispiel zu bleiben) das PHP-Skript schreibt, wie man es mit JavaScript einbindet, und so weiter, du weißt nur noch nicht, warum es sinnvoll ist, dass jetzt am Ende ein Text rauskommt und keine Graphik.</p> <p>Das mit dem Frust erzeugen allerdings passiert nicht, wenn das mit der didaktischen Reduktion richtig gemacht wird. Die Kunst bei der didaktischen Reduktion ist es, den Lernenden das, was auf das aktuell wesentliche reduziert ist, so unterzuschieben, dass gar nicht auffällt, dass da ein Mangel bestehen könnte.</p> <p>Insofern: Wenn da bei dir Frust erzeugt wird, dann hat die didaktische Reduktion nicht richtig funktioniert, denn dann ist es kein unauffälliges "das ist so", was dir da untergejubelt wird, sondern ein eher frustrierendes "das ist so und warum interessiert gerade nicht", das aber gerade Interesse weckt und dann aber sofort bremst und dadurch frustriert.</p> <p>Deshalb: Wenn das, was ich mit "besonders elegant" umschrieb, zur "elementaren Forderung" wird, dann deshalb, weil jemand zuvor die didaktische Reduktion falschgemacht hat.</p> <p>Man kann ja sowieso nur Dinge didaktisch reduzieren, die für das Verständnis des Lernziels eben nicht elementar, sondern eher nebensächlich oder zumindest von nachrangiger Bedeutung sind.</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759325#m1759325 Der Martin 2019-10-26T18:49:05Z 2019-10-26T18:49:05Z Verwendung Zugriffszähler mit Onlineanzeige <p>n'Abend,</p> <blockquote> <blockquote> <p>Das ist aber genau die Lehr- und Lernmethode, die bei mir regelmäßig Frust erzeugt, weil Fragen offen bleiben. Das war schon zur Schulzeit so. Für meine Lernstrategie ist es wichtig, dass ein Tutorial die bewusst weggelassenen Inhalte zumindest benennt und weiterführende Quellen für Interessierte angibt.</p> </blockquote> <p>Verständlich, wobei du damit in meiner Erfahrung eher in der Minderheit bist. Mir gehts übrigens ähnlich.</p> </blockquote> <p>wenigstens einer versteht mich. ;-)</p> <blockquote> <p>Das mit dem Frust erzeugen allerdings passiert nicht, wenn das mit der didaktischen Reduktion richtig gemacht wird. Die Kunst bei der didaktischen Reduktion ist es, den Lernenden das, was auf das aktuell wesentliche reduziert ist, so unterzuschieben, dass gar nicht auffällt, dass da ein Mangel bestehen könnte.</p> </blockquote> <p>Wieso fällt mir jetzt politische Rhetorik ein? - Viel reden, nichts sagen. Vor allem die Zuhörer so einlullen, dass sie gar nicht merken, welche Themen man absichtlich <strong>nicht</strong> anspricht.</p> <blockquote> <p>Insofern: Wenn da bei dir Frust erzeugt wird, dann hat die didaktische Reduktion nicht richtig funktioniert, denn dann ist es kein unauffälliges "das ist so", was dir da untergejubelt wird, sondern ein eher frustrierendes "das ist so und warum interessiert gerade nicht", das aber gerade Interesse weckt und dann aber sofort bremst und dadurch frustriert.</p> </blockquote> <p>Das führt uns dann wieder zu der Erkenntnis, dass es nur wenige Lehrer oder Dozenten gibt, die ihren Job auch pädagogisch-didaktisch wirklich drauf haben.<br> Die meisten sind gut in ihrem Fachgebiet, sind aber als Lehrer nur bedingt geeignet.</p> <p>Zu meiner Schulzeit (schwerpunktmäßig die 80er Jahre) herrschte sowieso akuter Lehrermangel, so dass die Latte vermutlich sehr niedrig lag.</p> <blockquote> <p>Deshalb: Wenn das, was ich mit "besonders elegant" umschrieb, zur "elementaren Forderung" wird, dann deshalb, weil jemand zuvor die didaktische Reduktion falschgemacht hat.</p> </blockquote> <p>Scheint so.</p> <p>Ciao,<br>  Martin</p> <div class="signature">-- <br> "Wenn man ein Proton aufmacht, sind drei Quarks drin."<br> - <a href="https://de.wikipedia.org/wiki/Joachim_Bublath" rel="nofollow noopener noreferrer">Joachim Bublath</a> in der <a href="https://de.wikipedia.org/wiki/Die_Knoff-Hoff-Show" rel="nofollow noopener noreferrer">Knoff-Hoff-Show</a> </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759327#m1759327 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-26T19:03:41Z 2019-10-26T19:03:41Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <blockquote> <p>Das mit dem Frust erzeugen allerdings passiert nicht, wenn das mit der didaktischen Reduktion richtig gemacht wird. Die Kunst bei der didaktischen Reduktion ist es, den Lernenden das, was auf das aktuell wesentliche reduziert ist, so unterzuschieben, dass gar nicht auffällt, dass da ein Mangel bestehen könnte.</p> </blockquote> <p>Wieso fällt mir jetzt politische Rhetorik ein? - Viel reden, nichts sagen. Vor allem die Zuhörer so einlullen, dass sie gar nicht merken, welche Themen man absichtlich <strong>nicht</strong> anspricht.</p> </blockquote> <p>Hehe, ähnlich vielleicht, aber nur so ähnlich.</p> <p>Der Unterschied:</p> <p>Politischer Rhetorik mag man unterstellen, dass sie nichts sagt und gleichzeitig noch das unterschlägt, was sie nicht sagt.</p> <p>Didaktische Reduktion unterschlägt auch, aber nie um ansonsten nichts zu sagen, sondern im Gegenteil, um das ansonsten tatsächlich gesagte im Fokus zu behalten und nicht abzulenken.</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759337#m1759337 Matthias Scharwies mscharwies@selfhtml.org 2019-10-27T08:48:14Z 2019-10-27T08:57:12Z Verwendung Zugriffszähler mit Onlineanzeige <p>Servus!</p> <p>@@marctrix @@Gunnar Bittersmann</p> <blockquote> <p>Der Aspekt eines Tutorials ist eine bestimmte <strong>Komponente</strong> (bspw. Wie baut man ein Aufklapp­menü?).</p> </blockquote> <p>Ja, aber...</p> <p>Ich versuche mich mal an einem <strong>Anforderungsprofil für Tutorials</strong>:</p> <p>Wikipedia sieht ein <a href="https://de.wikipedia.org/wiki/Tutorial" rel="nofollow noopener noreferrer">Tutorial</a> als "<em>schriftliche oder filmische Gebrauchsanleitung welche ein Thema, einen gewissen Vorgang oder eine Funktion erklärt.</em>"</p> <p><em>" … und ermöglichen es Neulingen – ähnlich wie bei einer individuellen Schulung – Erfahrung zu sammeln und ohne Lehrkraft schnell Ergebnisse zu erzielen. Häufig beziehen sich Tutorials auf einen gewissen Bereich eines umfassenderen Themas und dienen somit häufig der Einführung in ein Thema oder der Erklärung gewisser Themenabschnitte.</em>"</p> <blockquote> <p>Lernziel des Tutorials sind die Teile der Technologien <em>X</em>, <em>Y</em> <strong>und</strong> <em>Z</em>, die zur Umsetzung dieser Komponente erforderlich sind. Das sind bei einem Aufklapp­menü die HTML-Elemente <code>nav</code>, <code>ul</code> bzw. <code>ol</code>, <code>li</code>, <code>a</code> und <code>button</code>; etwas CSS; etwas JavaScript und das <code>aria-expanded</code>-Attribut, evtl. auch <code>aria-controls</code>.</p> </blockquote> <p>Ja, und trotzdem fangen nicht alle Tutorials bei Null an, sondern setzen Wissen voraus, dass dann aber in der <a href="https://wiki.selfhtml.org/wiki/Vorlage:Text-Info" rel="nofollow noopener noreferrer">Vorlage:Text-Info</a> definiert sein sollte.</p> <blockquote> <p>Der Aspekt eines Tutorials ist nicht Technologie <em>X</em> (bspw. ein bestimmtes JavaScript-Feature). Und Technologien <em>Y</em> und <em>Z</em> (z.B. semantisches HTML und ARIA) werden nicht behandelt. Das wäre dann kein Tutorial, sondern eine Dokumentation eines JavaScript-Features.</p> </blockquote> <p>Da ist mir der Begriff Tutorial zu eng gefasst. Wenn es um eine Komponente geht, die nur mit JS umgesetzt werden kann, ist es imho legitim, den HTML-Markup und Barrierefreiheit-Teil als Grundwissen zu erwähnen und zu verlinken und zwar <strong>am Anfang</strong> des Tutorials.</p> <blockquote> <p>Und schon ist Barriere­freiheit mit drin, ohne dass es den Rahmen eines Tutorials sprengen würde.</p> </blockquote> <p>Ebent!</p> <blockquote> <blockquote> <p>Tutorial […] Natürlich auch zu einem Artikel über JavaScript und Sicherheit oder Barrierfreiheit.</p> </blockquote> <p>Hier steckt der Fehler! Ein <strong>Tutorial</strong> kann kein Artikel über JavaScript sein. Oder Sicherheit. Oder Barriere­freiheit.</p> </blockquote> <blockquote> <blockquote> <p>Man sollte sich vor der Erstellung eines Tutorials klar machen, was gelehrt werden soll</p> </blockquote> <p>Ja!! Aber …</p> <blockquote> <p>und dann genau diesen einen Aspekt ausführlich behandeln. Und sonst nichts.</p> </blockquote> </blockquote> <p>Ich glaube, inhaltlich liegt ihr gar nicht so weit auseinander:</p> <ul> <li>eine Komponente; ein Thema mit <ul> <li>definiertem Vorwissen</li> <li>Lernzielen</li> </ul> </li> <li>der Technologie, die heute ausführlicher behandelt wird</li> <li>einem Ergebnis, das direkt einsetzbar ist.</li> </ul> <p>Die Barrierefreiheit muss wie die verwendeten HTML-Snippets mit ihrem Standardverhalten <strong>vorher</strong> festgelegt und erklärt werden!</p> <p>Der Artikel, auf den sich der Ausgangspost bezog, hätte durch ein kurzes HTML-Snippet mit für allen lesbaren Text die Bedingungen für Barrierefreiheit erfüllt und wäre im Vergleich zur realisierten Variante, die den Text in eine nicht barrierefreie Grafik geschrieben hat, wohl noch kürzer und verständlicher gewesen.</p> <p>Herzliche Grüße</p> <p>Matthias Scharwies</p> <div class="signature">-- <br> 25 Jahre SELFHTML → <strong><a href="https://forum.selfhtml.org/events/4" rel="noopener noreferrer">SELF-Treffen 05.-07. Juni 2020</a></strong> in <strong>Mannheim</strong> </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759339#m1759339 marctrix self@mhis.de https://www.mhis.de 2019-10-27T09:00:00Z 2019-10-27T09:28:12Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hej Gunnar,</p> <blockquote> <p>@@marctrix</p> </blockquote> <blockquote> <p>Der Aspekt eines Tutorials ist eine bestimmte <strong>Komponente</strong> (bspw. Wie baut man ein Aufklapp­menü?).</p> </blockquote> <p>Dann liegt hier unser Missverständnis. Mir war das hier beschriebene Tutorial zu unklar. Da ich kein JavaScript kann, habe ich es mir nicht durchgelesen, aber ich habe allerhand Fragen dazu. Und zwar nicht, warum bestimmte Dinge nicht erklärt werden, sondern warum es so viel Zeug enthält. Ein Zugriffszähler schien mir als Komponente so exotisch (sieht man gefühlt seit den 90ern nirgends mehr), dass ich nicht einmal auf die Idee gekommen bin, dass es um <em>diese</em> Komponente geht. Sondern eben um das, was du als „Nicht-Tutorial“ bezeichnest: ein technischer Aspekt.</p> <p>Und die Fragen, die sich nur aufgrund dieses anscheinend falschen Verständnisses stellten waren: warum denn das jetzt auch noch mit rein soll und was das Tutorial mir eigentlich sagen will.</p> <p>Meine Kritik (wenn man so weit gehen will, das als Kritik zu bezeichnen), richtet sich also weniger <em>gegen</em> dieses spezielle Tutorial. Sie ist eher als Plädoyer für didaktische Reduktion zu verstehen (den Begriff kannte ich allerdings noch nicht).</p> <p>Und die Ideen dahinter sind aus meiner Lehrtätigkeit zwei:</p> <ol> <li>Ich habe die Erfahrung gemacht, dass thematisch zusammenhängende Inhalte leichter aufgenommen werden, als thematische Sprünge.</li> <li>Ein Tutorial in dem von dir genannten Sinn macht erst Sinn, wenn die Technik dahinter bereits bekannt ist. Das muss dann eigentlich gar nicht als Erklärung dienen, sondern könnte ebenso gut als Übungsaufgabe gestellt werden, um vorhandenes Wissen anzuwenden. Es eignet sich weder zur Vermittlung von Wissen über JavaScript, noch über Barrierefreiheit oder PHP. Das Ergebnis wären winzige Wissensfetzen über drei unterschiedliche „Fächer“ ohne jeden konzeptionellen Zusammenhang. Eine absolut zufällige Auswahl. Geeignet eben um stichprobenartig Gelerntes zu überprüfen, aber ungeeignet um etwas zu vermitteln.</li> </ol> <p>Dass man bei der Erklärung von Barrierefreiheit ab einem bestimmten Punkt nicht mehr um Beispiele mit JavaScript oder CSS oder PHP […] herum kommt, versteht sich von selbst. Aber auch dann wird eben Barrierefreiheit erklärt. Vielleicht benutzt man dasselbe Beispiele an anderer Stelle um einen Sicherheitsaspekt von PHP zu erläutern. Aber das muss nicht sein. Und dann wird auch nicht auf Barrierefreiheit eingegangen, sondern auf den PHP-Sicherheitsaspekt.</p> <p>Tutorials wie du sie verstehst, lese ich übrigens auch sehr gerne. Zum Beispiel Heydon Pickerings inclusive Design components. Aber da finde ich technisch nichts, was ich nicht bereits wüsste. Mir gefällt einfach nachzuvollziehen, wie er denkt, wenn er so eine Komponente aufbaut.</p> <p>Und der Fokus ist dort auch klar. Bei einer barrierefreien Tabelle wird natürlich Barrierefreiheit behandelt. JavaScript wird dort praktisch übergangen (er erwähnt, dass man beispielsweise die von ihm geschriebenen Zeilen react benutzen kann, aber besser nicht, weil er auch kein JS-Experte ist. Wenn ich mich an den Artikel noch recht erinnere, hat er das nicht einmal selber geschrieben, sondern jemand anders für ihn).</p> <p>Also genau so, wie ich es machen würde. Wenn man sich für die Manipulation des DOM per JS interessiert, muss sich dazu an anderer Stelle einlesen. Das lässt Heydon zurecht aus, denn das würde seinen Artikel über barrierefreie, responsive Tabellen sprengen. Der ist eh schon lang.</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759407#m1759407 TS ts-self@online.de https://bitworks.de 2019-10-28T09:29:05Z 2019-10-28T09:29:05Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hello,</p> <blockquote> <p>Der Artikel, auf den sich der Ausgangspost bezog, hätte durch ein kurzes HTML-Snippet mit für allen lesbaren Text die Bedingungen für Barrierefreiheit erfüllt und wäre im Vergleich zur realisierten Variante, die den Text in eine nicht barrierefreie Grafik geschrieben hat, wohl noch kürzer und verständlicher gewesen.</p> </blockquote> <p>... und hätte damit nicht mehr wie vorgesehen funktioniert.<br> Der Artikel stammt aus einem Zyklus "Tracking". Dafür war es wichtig, dass nur ein <img>-Element eingefügt werden musste.</p> <p>Die Erweiterungen sind dann auf Wunsch eines Forumsbesuchers hinzugekommenm, um weitergehende Ansprüche zu erfüllen. Von AJAX und Eventlistenern wollte man damals noch nichts wissen.</p> <p>Es wäre also angemessen gewesen, nur den JavaScript-Teil mit dem Eventlistener zu ergänzen anstelle des <body onload ...>.</p> <p>Alle anderen Dinge (Barrierefreiheit) sind hier vielleicht erwähnenswert, haben aber z. B. mit Tracking überhaupt nichts zu tun. Oder hast Du schon mal barrierefreie Schnüffelsoftware gesehen?</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759344#m1759344 Matthias Apsel matthias.apsel@selfhtml.org https://brückentage.info 2019-10-27T10:00:12Z 2019-10-27T10:00:12Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hallo marctrix,</p> <blockquote> <p>Sie ist eher als Plädoyer für didaktische Reduktion zu verstehen (den Begriff kannte ich allerdings noch nicht).</p> </blockquote> <p>Neben dem, <a href="https://forum.selfhtml.org/m1759318" rel="noopener noreferrer">was Janosch dazu schon geschrieben hat</a>, kann ich dir noch den <a href="https://de.wikipedia.org/wiki/Didaktische_Reduktion" rel="nofollow noopener noreferrer">Wikipedia-Artikel</a> dazu empfehlen.</p> <p>Bis demnächst<br> Matthias</p> <div class="signature">-- <br> Pantoffeltierchen haben keine Hobbys.<br> ¯\_(ツ)_/¯ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759351#m1759351 marctrix self@mhis.de https://www.mhis.de 2019-10-27T10:35:21Z 2019-10-27T10:35:21Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hej Matthias,</p> <blockquote> <blockquote> <p>Sie ist eher als Plädoyer für didaktische Reduktion zu verstehen (den Begriff kannte ich allerdings noch nicht).</p> </blockquote> <p>Neben dem, <a href="https://forum.selfhtml.org/m1759318" rel="noopener noreferrer">was Janosch dazu schon geschrieben hat</a>, kann ich dir noch den <a href="https://de.wikipedia.org/wiki/Didaktische_Reduktion" rel="nofollow noopener noreferrer">Wikipedia-Artikel</a> dazu empfehlen.</p> </blockquote> <p>Dankeschön! - Mir hilft dieser Ansatz (da ich gerne vom Hölzchen aufs Stöckchen komme) dabei, mich immer wieder auf das zurück zu besinnen, was eigentlich gerade Thema ist. Klappt nicht immer… </p> <p>Es geht mir darum, mir selber die Lerninhalte bewusst zu machen.</p> <p>Das Gute ist, wenn man etwas niederschreibt: man hat praktisch beliebig Zeit, seinen Artikel/Tutorial/Anleitung immer wieder dahingehend zu überprüfen, ob das Vorwissen ausreichend genug beschrieben wurde, ob weiterführendes Wissen ausreichend referenziert ist und ob man alles weitere erklärt und alles für das gestellte Problem unnötige weggelassen hat.</p> <p>Ich erwarte von niemandem hier nur perfekte Wikipedia-Beiträge zu verfassen. Mein Beitrag soll nur ein Plädoyer sein. So lange der Artikel keinen Unsinn enthält, bin ich für jeden dankbar, der sich die Mühe macht, etwas beizutragen.</p> <p>Aber weil auch andere hier sicher ebensowenig Lehrer sind wie ich selber, möchte ich konstruktive Hinweise geben. Das war schon alles.</p> <p>Ausgangspunkt war ja das Posting von <a href="/users/6317" class="mention registered-user" rel="noopener noreferrer">@Orlok</a> (den ich sehr schätze), der zurecht die Unzugänglichkeit des Beispiels bemängelt hat (und von mir dafür ein Plus bekam). Mein Vorschlag bleibt dennoch: Text statt Grafik und hier nicht erklären warum.</p> <p>Marc</p> <div class="signature">-- <br> Ceterum censeo Google esse delendam </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759408#m1759408 Matthias Scharwies mscharwies@selfhtml.org 2019-10-28T09:44:13Z 2019-10-28T10:11:12Z Verwendung Zugriffszähler mit Onlineanzeige <p>Servus!</p> <blockquote> <p>Hello,</p> <blockquote> <p>Der Artikel, auf den sich der Ausgangspost bezog, hätte durch ein kurzes HTML-Snippet mit für allen lesbaren Text die Bedingungen für Barrierefreiheit erfüllt und wäre im Vergleich zur realisierten Variante, die den Text in eine nicht barrierefreie Grafik geschrieben hat, wohl noch kürzer und verständlicher gewesen.</p> </blockquote> <p>... und hätte damit nicht mehr wie vorgesehen funktioniert.<br> Der Artikel stammt aus einem Zyklus "Tracking".</p> </blockquote> <p>Dieser Zyklus ist mir unbekannt; es wurde auch im Artikel (auf <a href="https://web.archive.org/web/20180714024801/https://wiki.selfhtml.org/wiki/PHP/Tutorials/Zugriffsz%C3%A4hler_mit_Onlineanzeige" rel="nofollow noopener noreferrer"> web.archive.org </a> einsehbar) nicht anfangs erwähnt. Im Wiki (<a href="https://wiki.selfhtml.org/wiki/PHP/Tutorials" rel="nofollow noopener noreferrer">PHP/Tutorials</a>) finde ich da auch nichts.</p> <blockquote> <p>Dafür war es wichtig, dass nur ein <img>-Element eingefügt werden musste.</p> </blockquote> <p>und das hat den Thread-Ersteller schon vor Schwierigkeiten gestellt.</p> <blockquote> <p>Die Erweiterungen sind dann auf Wunsch eines Forumsbesuchers hinzugekommenm, um weitergehende Ansprüche zu erfüllen. Von AJAX und Eventlistenern wollte man damals noch nichts wissen.</p> </blockquote> <p>Der Artikel ist, soweit ich das sehen kann, von 2017 gewesen.</p> <p>Herzliche Grüße</p> <p>Matthias Scharwies</p> <div class="signature">-- <br> 25 Jahre SELFHTML → <strong><a href="https://forum.selfhtml.org/events/4" rel="noopener noreferrer">SELF-Treffen 05.-07. Juni 2020</a></strong> in <strong>Mannheim</strong> </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759409#m1759409 Camping_RIDER janosch.zoller@selfhtml.org http://www.campingrider.de 2019-10-28T09:53:18Z 2019-10-28T09:53:18Z Verwendung Zugriffszähler mit Onlineanzeige <p>Aloha ;)</p> <blockquote> <blockquote> <p>Der Artikel, auf den sich der Ausgangspost bezog, hätte durch ein kurzes HTML-Snippet mit für allen lesbaren Text die Bedingungen für Barrierefreiheit erfüllt und wäre im Vergleich zur realisierten Variante, die den Text in eine nicht barrierefreie Grafik geschrieben hat, wohl noch kürzer und verständlicher gewesen.</p> </blockquote> <p>... und hätte damit nicht mehr wie vorgesehen funktioniert.<br> Der Artikel stammt aus einem Zyklus "Tracking". Dafür war es wichtig, dass nur ein <img>-Element eingefügt werden musste.</p> </blockquote> <p>Ja. Wenn der Artikel so vorgesehen war, dass man nur ein <img> einfügt, das von einem PHP-Skript kommt, das Dinge tut, die man nicht verstanden hat, und die sowohl technisch (Besucherzählen im Allgemeinen) als auch ethisch (Tracking im Allgemeinen) fragwürdig sind, dann hätte der Artikel damit nicht mehr wie vorgesehen funktioniert.</p> <p>Nur war das, wie der Artikel vorgesehen war, dann halt vielleicht von Anfang an nicht sinnvoll. Zum Beispiel weil (für mich und andere, z.B. <a href="/users/243" class="mention registered-user" rel="noopener noreferrer">@Felix Riesterer</a>, der ja konkret nach diesen gefragt hatte) die Lernziele entweder nicht klar erkennbar waren oder eben nicht zum Artikel gepasst haben.</p> <p>Grüße,</p> <p>RIDER</p> <div class="signature">-- <br> Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller<br> # <a href="https://twitter.com/Camping_RIDER" rel="nofollow noopener noreferrer">Twitter</a> # <a href="http://steamcommunity.com/id/Camping_RIDER" rel="nofollow noopener noreferrer">Steam</a> # <a href="https://www.youtube.com/user/RidersFlame" rel="nofollow noopener noreferrer">YouTube</a> # <a href="http://wiki.selfhtml.org/wiki/Benutzer:Camping_RIDER" rel="nofollow noopener noreferrer">Self-Wiki</a> # <a href="http://community.de.selfhtml.org/fanprojekte/selfcode.htm" rel="nofollow noopener noreferrer">Selfcode</a>: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[ </div> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759411#m1759411 Felix Riesterer https://felix-riesterer.de 2019-10-28T09:54:47Z 2019-10-28T09:54:47Z Verwendung Zugriffszähler mit Onlineanzeige <p>Lieber Camping_RIDER,</p> <blockquote> <p>Nur war das, wie der Artikel vorgesehen war, dann halt vielleicht von Anfang an nicht sinnvoll. Zum Beispiel weil (für mich und andere, z.B. <a href="/users/243" class="mention registered-user" rel="noopener noreferrer">@Felix Riesterer</a>, der ja konkret nach diesen gefragt hatte) die Lernziele entweder nicht klar erkennbar waren oder eben nicht zum Artikel gepasst haben.</p> </blockquote> <p>daher ist es jetzt ein Gewinn, dass der Artikel weg ist.</p> <p>Liebe Grüße</p> <p>Felix Riesterer</p> https://forum.selfhtml.org/self/2019/oct/06/verwendung-zugriffszahler-mit-onlineanzeige/1759535#m1759535 TS ts-self@online.de https://bitworks.de 2019-10-29T14:14:33Z 2019-10-29T14:14:33Z Verwendung Zugriffszähler mit Onlineanzeige <p>Hello,</p> <p>der Artikel war ganz ohne erhobenen Zeigefinger entstanden. Bei derart integrierten Beispielen würde ich mir niemals diese Arroganz anmaßen.</p> <p>Es gibt Dinge, "die man programmtechnisch nicht machen sollte", aber es gibt nie nur die eine Wahrheit.</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div>