eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.wwwJak wstawić skrypt JS?
Ilość wypowiedzi w tym wątku: 8

  • 1. Data: 2013-05-07 23:24:07
    Temat: Jak wstawić skrypt JS?
    Od: Marek <p...@s...com>

    Wstawiam na stronę WWW widget pogodowy:

    <div class="box">
    <script type="text/javascript"
    src="http://www.pogodynka.pl/widget/get/gdansk_gdans
    k/?a1=FFFFFF&a2=0088FF"></script>
    </div>

    Pięknie się wyświetla ale ma jeden feler: serwer jest bardzo wolny i
    blokuje ładowanie się strony (wykonywanie innych skryptów) czasem o
    kilkadziesiąt sekund. Czy da się bez angażowania programowania po
    stronie serwera załadować i wykonać ten skrypt asynchronicznie? Dodanie
    async=true nie zadziała gdyż skrypt zwraca document.write(...) więc musi
    się wykonać dokładnie w tym miejscu gdzie ma się pogoda wyświetlić.

    Ajax też nie zadziała bo wywołanie jest między domenowe.

    Czy jest jeszcze jakiś sposób?

    --
    Pozdrawiam
    Marek


  • 2. Data: 2013-05-08 09:23:14
    Temat: Re: Jak wstawić skrypt JS?
    Od: Cezary Tomczyk <c...@g...com>

    W dniu wtorek, 7 maja 2013 23:24:07 UTC+2 użytkownik Marek napisał:
    > Wstawiam na stronę WWW widget pogodowy:
    >
    >
    >
    > <div class="box">
    >
    > <script type="text/javascript"
    >
    > src="http://www.pogodynka.pl/widget/get/gdansk_gdans
    k/?a1=FFFFFF&a2=0088FF"></script>
    >
    > </div>
    >
    >
    >
    > Pięknie się wyświetla ale ma jeden feler: serwer jest bardzo wolny i
    >
    > blokuje ładowanie się strony (wykonywanie innych skryptów) czasem o
    >
    > kilkadziesiąt sekund. Czy da się bez angażowania programowania po
    >
    > stronie serwera załadować i wykonać ten skrypt asynchronicznie? Dodanie
    >
    > async=true nie zadziała gdyż skrypt zwraca document.write(...) więc musi
    >
    > się wykonać dokładnie w tym miejscu gdzie ma się pogoda wyświetlić.
    >
    >
    >
    > Ajax też nie zadziała bo wywołanie jest między domenowe.
    >
    >
    >
    > Czy jest jeszcze jakiś sposób?

    Ja bym zrobił tak:

    <div class="box">
    <script>
    var s = document.createElement('script'),
    head = document.head || document.getElementsByTagName('head')[0];
    s.async = 'async';
    s.src = 'http://www.pogodynka.pl/widget/get/gdansk_gdansk/?a
    1=FFFFFF&a2=0088FF';
    head.insertBefore(s, head.firstChild);
    </script>
    </div>

    "Ale"... to wcale nie musi być rozwiązanie problemu. "Pogodynka" po załadownaniu
    script-u może uruchamiać taką ilość requestów, że "zapycha" się maksymalna ilość
    requestów, jakie może wykonać przeglądarka dla jednej lokalizacji w tym samym czasie.

    Spróbuj jeszcze uruchomić powyższe po załadowaniu zawartości strony:

    <div class="box">
    <script>
    window.onload = function () {
    var s = document.createElement('script'),
    head = document.head || document.getElementsByTagName('head')[0];
    s.async = 'async';
    s.src = 'http://www.pogodynka.pl/widget/get/gdansk_gdansk/?a
    1=FFFFFF&a2=0088FF';
    head.insertBefore(s, head.firstChild);
    };
    </script>
    </div>

    + uwagi:
    https://developer.mozilla.org/pl/docs/DOM/window.onl
    oad#Uwagi

    --
    Cezary Tomczyk
    http://www.ctomczyk.pl/


  • 3. Data: 2013-05-08 19:52:33
    Temat: Re: Jak wstawić skrypt JS?
    Od: Marek <p...@s...com>

    A jak to w zasadzie ma działać? Z tego co widzę, to z pogodynki zostanie
    odczytany JS, który wygląda tak:

    document.write("...");

    No i ta treść zostanie wstawiona do head'a asynchronicznie (czyli de
    facto po załadowaniu się kodu strony). Czyli powstanie taki kod strony:

    <head>
    <script>
    document.write("...tu HTML");
    </script>

    <title>...</title>
    ....
    </head>

    W ten sposób:

    1. Nie zostanie wykonany kod JS lecz tylko wstawiony. Czy tak? Parser
    kodu JS browsera dawno przeszedł ten fragment więc wstawienie w to
    miejsce czegokolwiek nie spowoduje wykonania tego kodu. Trzeba by
    wywołać eval() tego co przyjdzie.

    2. Nawet jeśli ten kod udałoby się wykonać to efekt jego pracy powstanie
    w sekcji <head>, co będzie nieprawidłową lokalizacją dynamicznie
    wygenerowanego kodu. W końcu chcemy aby prognoza pogody wyświetliła się
    gdzieś w treści strony WWW a nie w nagłówku.


    --
    Pozdrawiam
    Marek


  • 4. Data: 2013-05-08 21:11:58
    Temat: Re: Jak wstawić skrypt JS?
    Od: ABC <a...@a...ab>

    W dniu 07.05.2013 23:24, Marek pisze:
    > Czy jest jeszcze jakiś sposób?

    Może napisać kawałek kodu w PHP:
    * pobrać URL
    * wywalić document.write('...') i zostanie sam HTML
    * wstawić w kod strony

    Można tez dorobić cache, aby nie pobierać prognozy przy każdej odsłonie
    strony.


  • 5. Data: 2013-05-09 08:23:48
    Temat: Re: Jak wstawić skrypt JS?
    Od: Marek <p...@s...com>

    W dniu 2013-05-08 21:11, ABC pisze:
    > W dniu 07.05.2013 23:24, Marek pisze:
    >> Czy jest jeszcze jakiś sposób?
    >
    > Może napisać kawałek kodu w PHP:
    > * pobrać URL
    > * wywalić document.write('...') i zostanie sam HTML
    > * wstawić w kod strony

    Zacytuję swoje słowa z wątku otwierającego:

    "Czy da się bez angażowania programowania po stronie serwera załadować i
    wykonać ten skrypt asynchronicznie?" :-D

    > Można tez dorobić cache, aby nie pobierać prognozy przy każdej odsłonie
    > strony.

    Cache w JS? W jaki sposób? Cookies do tego celu się nie nadają gdyż są
    zbyt krótkie.

    --
    Pozdrawiam
    Marek


  • 6. Data: 2013-05-09 16:40:49
    Temat: Re: Jak wstawić skrypt JS?
    Od: Paweł Piskorz <n...@p...nie.invalid>

    W dniu 2013-05-07 23:24, Marek pisze:
    > Wstawiam na stronę WWW widget pogodowy:
    >
    > <div class="box">
    > <script type="text/javascript"
    > src="http://www.pogodynka.pl/widget/get/gdansk_gdans
    k/?a1=FFFFFF&a2=0088FF"></script>
    >
    > </div>
    >
    > Pięknie się wyświetla ale ma jeden feler: serwer jest bardzo wolny i
    > blokuje ładowanie się strony (wykonywanie innych skryptów) czasem o
    > kilkadziesiąt sekund. Czy da się bez angażowania programowania po
    > stronie serwera załadować i wykonać ten skrypt asynchronicznie?

    Wrzuć go do iframe.


    --
    message[autor="PablO"]::after {
    content:"Pozdrawiam";
    }


  • 7. Data: 2013-05-09 18:02:43
    Temat: Re: Jak wstawić skrypt JS?
    Od: Marek <p...@s...com>

    W dniu 2013-05-09 16:40, Paweł Piskorz pisze:
    >
    > Wrzuć go do iframe.

    No tak, najprostsze rozwiązania najtrudniej dostrzec. :-D
    Dzięki :-)


    --
    Pozdrawiam
    Marek


  • 8. Data: 2013-05-09 21:47:47
    Temat: Re: Jak wstawić skrypt JS?
    Od: Marek <p...@s...com>

    W dniu 2013-05-09 18:02, Marek pisze:
    >> Wrzuć go do iframe.
    >
    > No tak, najprostsze rozwiązania najtrudniej dostrzec. :-D
    > Dzięki :-)

    Może wyjaśnienie dla pokoleń.
    Nie należy wrzucać <iframe src="weather.html"> gdyż nic się nie zmieni.
    Strona nadal będzie czekała na uruchomienie się skryptów w kodzie
    weather.html. Należy w JS dynamicznie ustawić src jako ostatnią
    instrukcję w kodzie inicjującym.


    --
    Pozdrawiam
    Marek

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: