Hogyan tudom meghatározni a meghívót js linkjének get paraméterét?

Hogyan tudom meghatározni a meghívót js linkjének get paraméterét?
2022-01-08T17:36:51+01:00
2022-01-08T20:31:42+01:00
2022-10-15T21:21:03+02:00
SulliPod
Sziasztok,
abban kérném a segítségeteket, hogy hogyan tudnám megkapni az id paramétert:

adott egy xyz.hu weboldal, ami szeretne behívni egy másik weboldalon található js fájlt, egy "id" paraméterrel együtt. példa:

<script src="https://asdqwe.com/public/js/asd.js?id=125673"></script>
Amikor pedig fut a js fájl, akkor szeretném console.log-al kiiratni, hogy az id paraméter mit tartalmaz (A próbálkozásaim során mindig azt az "id" paramétert akarta kiírni, ami az xyz.hu oldal-nak lenne "id" paramétere, nekem viszont ebből kellene az id: asd.js?id=125673)

Ahogy néztem a google tag manager beágyazása is így történik, ahol az azonosító szintén a js meghívásánál kerül átadásra.
Mutasd a teljes hozzászólást!
A ?id csak a szerver számára értelmezhető adat, így egyedül csak a szerveren tudsz vele kezdeni bármit is. Olyat nem tudsz, hogy egy static js fájlt behivatkozol ezen a módon, és böngészőoldalon JavaScript-ben lekérdezed ezt az értéket. Olvass utána, hogy a HTTP kommunikáció és a query paraméterek hogy működnek.

Persze az is lehet, hogy én értelek félre. Meg tudnád fogalmazni pontosabban, hogy mit és hol szeretnél csinálni?
Mutasd a teljes hozzászólást!

  • Szerintem itt inkább arról van szó, hogy a JavaScript fájlt valamilyen szerveroldali technológia (mint például PHP, ASP.NET, Node.JS stb.) adja ki, és attól függ a script tartalma, hogy mi volt a query string paraméterek értéke. Azaz más JavaScript kódot kap az 1-es ID-t küldő, és megint más kódot kap a 2-es ID-t küldő.

    Ez természetesen önmagában még nem biztos, hogy működni fog. Ha PHP-vel csinálod a weboldaladat, akkor URL rewrite-ra is szükséged lesz, hogy a /public/js/asd.js URL-re érkező request-eket a PHP scriptedre irányítsa.

    Amikor pedig fut a js fájl, akkor szeretném console.log-al kiiratni, hogy az id paraméter mit tartalmaz

    Mármint a böngésző írja ki, vagy a szerveroldal? Böngészőben annyi, hogy bele kell a JavaScript kódba generálni ezt az értéket konstansként. Szerveroldalon pedig amikor ezt az asd.js fájlt letöltik tőled, akkor logolod.
    Mutasd a teljes hozzászólást!
  • Én valami olyasmire gondolnék megoldásként, hogy a js fájlban:
    console.log("és ide jönne a leolvasott id paraméter, ami a .js?id=5632582835"-ből jön);

    az eredmény a console-on pedig: 5632582835

    ha nem lesz rá megoldás, akkor az url route-on keresztül adom majd át az azonosítót
    Mutasd a teljes hozzászólást!
  • A ?id csak a szerver számára értelmezhető adat, így egyedül csak a szerveren tudsz vele kezdeni bármit is. Olyat nem tudsz, hogy egy static js fájlt behivatkozol ezen a módon, és böngészőoldalon JavaScript-ben lekérdezed ezt az értéket. Olvass utána, hogy a HTTP kommunikáció és a query paraméterek hogy működnek.

    Persze az is lehet, hogy én értelek félre. Meg tudnád fogalmazni pontosabban, hogy mit és hol szeretnél csinálni?
    Mutasd a teljes hozzászólást!
  • Köszönöm, lényegében megkaptam a választ, hogy az asd.js paraméterét csak a szerver láthatja és az url route-on keresztül kell leolvasnom az id értékét, én az oldal betöltődését követően kerestem a megoldást, hogy a js dolgozni tudjon az azonosítóval.
    Mutasd a teljes hozzászólást!
  • Köszönöm, lényegében megkaptam a választ, hogy az asd.js paraméterét csak a szerver láthatja

    Ez így ebben a formában nem igaz. A JS kód hozzáfér a DOM fához (legalább is az adott <script> tagig betöltődött részéhez, később már az egészhez), és kikeresheti azt a <script> taget, amiből őt meghívták. Eléggé tákolós megoldás, de ha tudod hogy honnan "kéne" betöltődnie a szkriptednek, akkor a szkripten belülre írhatsz ilyesmit:

    const scriptElement = document.querySelector("script[src^='https://asdqwe.com/public/js/asd.js']"); const src = scriptElement.src; const id = new URL(src).searchParams.get("id");
    Nem lesz túl rugalmas megoldás, mert bele kell gyógyítani a kódba a saját URL-jét, de simán el tudom képzelni, hogy a Google Tag Manager ilyesmi trükköt használ.
    Mutasd a teljes hozzászólást!
  • Igen, megoldásnak ez sem lenne utolsó, de végül belenyuúltam a core-ba, megoldottam url route-lással, így a beágyazáskor .js-re hivatkozik, de a js-nek a kimenetét már php állítja elő, php-val meg már könnyedén meg van a get paraméter
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd