Új hozzászólás Aktív témák

  • Taci

    addikt

    Sziasztok!

    Próbálnék egy olyan megoldást csinálni, hogyha eredeti forrásból (CDN) nem sikerül behúzni a kívánt .js fájlt, akkor használja saját szerverről.

    Többféle megoldással is próbálkoztam, de egyedül csak a document.write működik, a többi sajnos nem.

    JSFiddle: https://jsfiddle.net/942fgodv/
    (Elsőnek egy Bootstrap JS-t töltenék a példa kedvéért, azt direkt elrontom, aztán jön a fallback, ami a példában egy custom alert JS, szintén CDN-ről.)

    Tehát az elején szimulálom a CDN elérhetetlenségét, elrontom a linket (1-est írok elé).

    Aztán próbáltam egy olyan megoldást, hogy a <script> tagbe írtam egy onerror-lépést, de sajnos nem működik. (Fura, CSS-nél működik.)

    Aztán jön a document.write, ami szépen működik, fel is jön az custom alert, tehát betöltött a 2. JS, és így a custom funkciót is tudta használni.
    Eredetileg ezzel a megoldással készítettem el az oldalam ezen részét, viszont a Lightroom lepontozza, azt írja, ne használjam, mert lassíthatja a lassú kapcsolattal rendelkezőknél a betöltést. Ezért keresek más megoldást.

    Harmadik megoldási kísérletem pedig az, hogy document.head.appendChild()-dal hozzáadom a feltöltött script taget.
    Ez szépen hozzá is adja, betöltés után látom, hogy jó helyen van (a custom funkció hívása előtt), viszont gondolom, a HTML feldolgozása nem várja meg, így hamarabb jut a funkcióhíváshoz, minthogy betöltené a hozzá szükséges JS-t, ezért le sem fut.

    Miért megy document.write-tal, és miért nem appendChild-dal? (Bár gondolom, azért nem, mert aszinkronban tölti le, míg a document.write blokkolja a további feldolgozást addig. És talán pont ezért nem javasolt a használata.)

    Tudtok erre a problémára jó megoldást?
    (Nem csak a CDN elérhető / nem elérhető helyzetre kell, másra is szeretném használni.)

    Köszönöm.

Új hozzászólás Aktív témák

Hirdetés