• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

document.write ersetzen

Wenn ich das richtig verstanden habe brauchst du dann keinen Umweg mehr mit
Javascript:
document.write
oder
HTML:
<script src...>
sondern machst einen ganz "normalen" AJAX Request vom HTML Dokument deines Kunden gegen deinen Zählerserver.
 
Also, alles noch einmal, kurz zusammengefasst:
  1. Ich wollte document.write nutzen und fand den Hinweis, dass diese Vorgehensweise zukünftig geblockt werden könnte. Da war ich noch nicht im Echtbetrieb.
  2. Daher nutze ich jetzt die Ajax-Variante, die ich etwas "umständlicher" finde. Lieber würde ich <script src ... mit einer Variablen aufrufen, aber das scheint nicht zu gehen, außer ich erzeuge die Code-Zeile mit document.write. Aber dann kommt die Gefahr des evtl. Blockens ins Spiel.
  3. Es ist doch essentiell, dass Google (also Chrome) das unterstützt und nicht blockt. Wenn es geblockt wird, geht doch mein Zähleraufruf nicht mehr. Das ist mir doch gerade mit den Cookies passiert.
 
Wenn es mit AJAX geht hast du doch die bestmögliche Technik im Einsatz. Wie genau sieht denn dieser Chrome Block aus? Bitte ein Screenshot zeigen mit der Webseite und Adresszeile.
 
Wenn es mit AJAX geht hast du doch die bestmögliche Technik im Einsatz. Wie genau sieht denn dieser Chrome Block aus? Bitte ein Screenshot zeigen mit der Webseite und Adresszeile.
Meinst du das, denn das hatte ich bereits geschrieben:
A parser-blocking, cross site (i.e. different eTLD+1) script, https://www.yogizaehler.de/Besucherzaehler/z_020_006.php?id=0000000000&anz=null, is invoked via document.write. The network request for this script MAY be blocked by the browser in this or a future page load due to poor network connectivity. If blocked in this page load, it will be confirmed in a subsequent console message. See https://www.chromestatus.com/feature/5718547946799104 for more details.
 
Welche Variable? Meinst du die id und anz? Warum nicht? Wie sieht denn dein AJAX Request aus, der nicht funktioniert?
 
Achtung: Ajax geht!

Nur das geht nicht:
Hierbei wird die localStorage-Variable nicht übergeben.

Also machte ich folgendes:
<script>document.write("<script src='https://www.yogizaehler.de/Besucherzaehler/z_020_006.php?id=0000000000&anz="+localStorage.getItem('YZ020')+"'><\/script>");</script>
Das funktioniert super, aber nur mit dem Hinweis, dass zukünftig bei so einer Konstruktion der Aufruf geblockt werden könnte, da er mit document.write erzeugt wurde.

Und da mir das zu heiß war (das evtl. zukünftige Blocken), bin ich auf Ajax umgestiegen.

Ich persönlich finde aber die Lösung ganz oben besser und fragte deshalb hier nach, wie man bei <script src=' ... eine Variable übergeben kann. Mehr wollte ich nicht wissen, aber das scheint prinzipiell nicht zu gehen, oder?
 
Warum zeigst du nicht deinen AJAX code? Du willst doch die Variable aus dem localstorage mit an den Server übergeben, also müssen wir den AJAX Code anschauen warum die Variable nicht gesendet wird. Dafür könnten wir auf diesen .write und <script> Quatsch komplett verzichten.
 
Zuletzt bearbeitet:
Drücke ich mich so missverständlich aus?

Ajax funktioniert!!!

Mir ging es nur darum, wie man an <script src=' ... eine Variable anhängen kann, die auch übergeben wird.
 
@Yogilein

Zu deiner Frage:
HTML:
<script src='https://www.yogizaehler.de/Besucherzaehler/z_020_006.php?id=0000000000&anz="+localStorage.getItem('YZ020')+"'></script>
Funktioniert nicht, da der Zugriff auf die Storage API nur im JavaScript Kontext funktioniert, der Code aber im HTML Kontext stattfindet.

Die einzige Möglichkeit, wie der dynamische Link erstellt werdern kann ist also in JavaScript. Wenn nicht über document.write, muss es über einen dynamischen Script-Tag geschehen.
Und das ist der Punkt den @mikdoe meint: Wenn man den Tag schon dynamisch zusammen setzt, kann man für den Request gleich das Script-Tag weglassen und den Request mit Hilfe von XHR oder fetch machen.
 
Das mit dem dynamischen Script-Tag will irgendwie auch nicht gehen, denn ich bekomme vom erzeugten Javascript einen Fehler gemeldet (Element existiert nicht). Das kann eigentlich nicht sein, da das Element direkt im Skript erzeugt wird. Aber ich kenne solche Fehler, da scheint der Zugriff vor der Erzeugung zu erfolgen, obwohl es vom Ablauf eigentlich umgekehrt sein sollte.

Aber egal, ich bleibe jetzt bei der Ajax-Methode, die bis jetzt völlig fehlerfrei funktioniert.
 
Hier mein Original-Code, wie er ausgeliefert wird.

Code:
(function(){if(typeof XMLHttpRequest!='undefined'){req=new XMLHttpRequest();}if(!req){try{req=new ActiveXObject('Msxml2.XMLHTTP');}catch(e){try{req=newActiveXObject('Microsoft.XMLHTTP');}catch(e){req=null;}}}datei='https://www.yogizaehler.de/Besucherzaehler/z_020_x.php?id=??????????&anz='+localStorage.getItem('YZ020');req.open('get',datei);req.send(null);req.onreadystatechange=hc;function hc(){if(req.readyState===4&&req.status===200)document.getElementById('YoZä020').innerHTML=(req.responseText);}}());
 
Zurück
Oben