Javascript appendChild nem élő?

Javascript appendChild nem élő?
2016-09-29T18:44:00+02:00
2016-09-30T07:19:55+02:00
2022-12-04T01:50:42+01:00
omelon
Sziasztok!

Google PageSpeed Insights programban szeretnék 100% oldalt készíteni. Ettől egy dolog választ el.

Folyton figyelmztet a jquery.js miatt. Az oldalon található összes css-t és js-t már jqueryvel hívom be így nem jelez a tester. De valami miatt ha document.getElementsByTagName("head")[0].appendChild() fgvnyel létrehozom a jquery.js-t akkor a jquery kódokat nem tudja értelmezni a fordító. Tehát a forráskódban létrejön <script src="jquery.js"></script> kód de ha $(document).ready(function(){} részt később meghívok nem reagál rá.

Tudtok ebben segíteni nekem? Előre is köszönöm.

Üdv Omelon
Mutasd a teljes hozzászólást!

  • Nem az a gond, hogy előbb szeretnéd használni a jQueryt, mint ahogy egyáltalán betöltődött volna? Attól, hogy egy script elemet beszúrsz a DOM fába, a tartalma nem lesz egyből elérhető a következő sorban. Előbb a böngésző megvárja, hogy az aktuálisan futó szkript véget érjen, aztán elküldi a kérést a szerver felé, a választ értelmezi, és csak ezek után tudod a szkript által adott funkcionalitást használni.

    Itt láthatsz példát rá, hogy hogyan tudsz script elemet beszúrni a DOM-ba, és értesülni róla, ha rendben betöltődött.
    Mutasd a teljes hozzászólást!
  • Mivel a dokumentum betöltése után indul meg a kód futtatása, erre az eseményre már nem tudsz feliratkozni.
    Nem kell annyit agyalni rajta, használd a hagyományos módszereket.

    Attól, hogy az analizáló eszközöket átvered, még nem lesz gyorsabb az oldalad, sőt le is tiltasz egy csomó gyorsítótárazási és optimalizációs technikát, amelyet a böngészők használnának.
    Ha aszinkron módon hívod meg a kódokat és megfelelő tömörítést használsz, nem kellene problémát okoznia az elemző eszközöknél, hogy szkriptek futnak az oldalon.
    Mutasd a teljes hozzászólást!
  • Ahogy matt383 előttem megírta, nincs értelme annak amit csinálsz, gyorsítást nem fogsz vele elérni. Ha mégis mindenáron így szeretnéd, az alábbi, kis gyors kereséssel talált példával be tudod húzni dinamikusan a jQ libet.

    <script> (function () { function loadScript(url, callback) { var script = document.createElement("script") script.type = "text/javascript"; if (script.readyState) { //IE script.onreadystatechange = function () { if (script.readyState == "loaded" || script.readyState == "complete") { script.onreadystatechange = null; callback(); } }; } else { //Others script.onload = function () { callback(); }; } script.src = url; document.getElementsByTagName("head")[0].appendChild(script); } loadScript("https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function () { //innen lehet jQ-t használni $(document).ready(function() { $('#mydiv').html('jquery ok'); }); }); })(); </script> <div id="mydiv"></div>
    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