Ebay EPN: Fehler bei Quellzuordnung

Das Ebay-Partnerprogramm stellt ein Skript bereit, das Links auf der Clientseite konvertiert. Es ist eine einfache Zwei-Zeilen-Lösung:

<script>window._epn = {campaign: [XXX_ID_XXX], smartPopover:false};</script>
<script src="https://epnt.ebay.com/static/epn-smart-tools.js"></script>

Mir ist bewusst, dass ich diese beiden Zeilen aus Sicherheitsgründen nicht einfach hinzufügen kann. Hier gibt es eine kleine Diskussion: EPN Smart Links

Ich habe eine sehr einfache Theme-Komponente erstellt und den Code in die Datei common/head_tag.html eingefügt:

Die ID ist auf der Komponentenseite angegeben und die Konsole protokolliert die richtige ID. Es scheint jedoch keine URLs zu aktualisieren.

Ich habe diese epn-smart-tools.js als Ausnahme für die Content Security Policy hinzugefügt. In der Browserkonsole erhalte ich jedoch diese Warnung:
image

Es sieht so aus, als ob diese “from-url.js.map”, auf die in epn-smart-tools.js verwiesen wird, das Problem ist. Ich habe eine einfache HTML-Datei auf meinem Desktop erstellt und sie lokal ausgeführt, und es scheint kein Problem zu geben - was mich zu der Annahme veranlasst, dass es sich eher um ein Problem auf der Discourse-Seite als in meinem Browser handelt.

Was diese Source Maps tun und wie Discourse mit ihnen interagiert, liegt außerhalb meines Wissens. Irgendwelche Ratschläge? Übersehe ich etwas?

Source Maps sind optionale Dateien, die beim Debuggen von minimierten Assets helfen. Da Sie dieses Asset nicht kontrollieren und keine Kontrolle über dessen Quelle haben, sollten Sie diese Warnung ignorieren.

2 „Gefällt mir“

Danke für die Info @Falco und alles Gute zum Geburtstag.

Ich habe herausgefunden, dass das Problem dort lag, wo ich diese `<script src="… Zeile eingefügt habe.

Das hat für mich funktioniert:

<script type="text/discourse-plugin" version="0.8">

  console.log(settings.epn_id);
  window._epn = {campaign: settings.epn_id, smartPopover:false};

  var script = document.createElement('script');
  script.src = 'https://epnt.ebay.com/static/epn-smart-tools.js';
  var head = document.getElementsByTagName("head")[0];
  head.appendChild(script);

</script>

Das nächste Problem, auf das ich gestoßen bin, ist, dass Elemente, die dynamisch geladen werden, das Skript nicht angewendet bekommen. Wenn ich zum Beispiel eine Seite zu einem Thema aktualisiere, haben die Beiträge, die geladen werden, den Affiliate-Link, aber wenn ich scrolle, um weitere Beiträge anzuzeigen – diese werden nicht angezeigt.

Gibt es eine Möglichkeit, das Skript jedes Mal auszuführen, wenn ein neues Element geladen wird?

1 „Gefällt mir“

Idealerweise würden Sie das serverseitig tun, sobald ein neuer Beitrag gespeichert wird. Wir haben ein Plugin, das genau das für Amazon tut, sodass Sie es für eBay anpassen können: GitHub - discourse/discourse-affiliate

Wenn Sie es immer noch clientseitig tun möchten, können Sie dieser hilfreichen Anleitung folgen: Link rewriting for affiliate codes - #8 by Johani