-
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