-
1. Data: 2013-08-28 20:54:56
Temat: Problem z ładowaniem się strony
Od: Marek <p...@s...com>
Witam,
Wcisnąłem na stronę reklamę programu partnerskiego. Jest to odwołanie do
skryptu JS (<script src=...>), który kończy się poleceniem write(html).
Sęk w tym, że serwer reklamodawcy jest bardzo wolny i czasem 30 sekund
trzeba na odpowiedź czekać. Blokuje mi to działanie moich skryptów na
stronie i powstaje sieczka. Dopisałem więc atrybut async do elementu
script. Dało to tylko efekt, ze reklama zniknęła. Czy macie pomysł jak
załadować taki skrypt asynchronicznie a efekt jego działania umieścić w
konkretnym DIVie?
--
Pozdrawiam
Marek
-
2. Data: 2013-08-29 13:00:58
Temat: Re: Problem z ładowaniem się strony
Od: c...@g...com
W dniu środa, 28 sierpnia 2013 20:54:56 UTC+2 użytkownik Marek napisał:
> Witam,
>
>
>
> Wcisnąłem na stronę reklamę programu partnerskiego. Jest to odwołanie do
>
> skryptu JS (<script src=...>), który kończy się poleceniem write(html).
>
> Sęk w tym, że serwer reklamodawcy jest bardzo wolny i czasem 30 sekund
>
> trzeba na odpowiedź czekać. Blokuje mi to działanie moich skryptów na
>
> stronie i powstaje sieczka. Dopisałem więc atrybut async do elementu
>
> script. Dało to tylko efekt, ze reklama zniknęła. Czy macie pomysł jak
>
> załadować taki skrypt asynchronicznie a efekt jego działania umieścić w
>
> konkretnym DIVie?
Niestety, ale ładowanie <scipt>-ów generalnie blokuje przeglądarkę dopóki zawartość
nie zostanie ściągnięta i wykonana. Aczkolwiek, można to "naprawić" poprzez
utworzenie dynamicznie elementu <script>, np. tak:
var s = document.createElement('script'),
elm = document.getElementById('test'); // Tutaj ID Twojego elementu div
// s.type = 'text/javascript'; // jeśli używasz HTML5 to możesz atrybut "type"
pominąć
s.src = 'tutaj URL do script-u';
if (elm){
elm.appendChild(elm);
}
W ten sposób ładowanie zawartości z zewnętrznego serwisu nie będzie blokowało
ładowania reszty strony.
Możesz jeszcze utworzyć <iframe> i tam załadować zewnętrzny kod bez blokowania
ładowania strony. Aczkolwiek przy iframie należałoby sprawdzić czy zewnętrzny kod
działa prawidłowo i czy są oczekiwane rezultaty. Przykładowo cookies z witryn
"trzecich" są blokowane przez niektóre przeglądarki jak Firefox 22 czy Safari 6.
--
Cezary Tomczyk
http://www.ctomczyk.pl/
-
3. Data: 2013-08-29 16:25:47
Temat: Re: Problem z ładowaniem się strony
Od: Cezary Tomczyk <c...@g...com>
On 2013-08-29 13:00, c...@g...com wrote:
> W dniu środa, 28 sierpnia 2013 20:54:56 UTC+2 użytkownik Marek napisał:
>> Witam,
>>
>>
>>
>> Wcisnąłem na stronę reklamę programu partnerskiego. Jest to odwołanie do
>>
>> skryptu JS (<script src=...>), który kończy się poleceniem write(html).
>>
>> Sęk w tym, że serwer reklamodawcy jest bardzo wolny i czasem 30 sekund
>>
>> trzeba na odpowiedź czekać. Blokuje mi to działanie moich skryptów na
>>
>> stronie i powstaje sieczka. Dopisałem więc atrybut async do elementu
>>
>> script. Dało to tylko efekt, ze reklama zniknęła. Czy macie pomysł jak
>>
>> załadować taki skrypt asynchronicznie a efekt jego działania umieścić w
>>
>> konkretnym DIVie?
>
> Niestety, ale ładowanie <scipt>-ów generalnie blokuje przeglądarkę dopóki zawartość
nie zostanie ściągnięta i wykonana. Aczkolwiek, można to "naprawić" poprzez
utworzenie dynamicznie elementu <script>, np. tak:
>
> var s = document.createElement('script'),
> elm = document.getElementById('test'); // Tutaj ID Twojego elementu div
>
> // s.type = 'text/javascript'; // jeśli używasz HTML5 to możesz atrybut "type"
pominąć
> s.src = 'tutaj URL do script-u';
> if (elm){
> elm.appendChild(elm);
elm.appendChild(s);
> }
>
> W ten sposób ładowanie zawartości z zewnętrznego serwisu nie będzie blokowało
ładowania reszty strony.
>
> Możesz jeszcze utworzyć <iframe> i tam załadować zewnętrzny kod bez blokowania
ładowania strony. Aczkolwiek przy iframie należałoby sprawdzić czy zewnętrzny kod
działa prawidłowo i czy są oczekiwane rezultaty. Przykładowo cookies z witryn
"trzecich" są blokowane przez niektóre przeglądarki jak Firefox 22 czy Safari 6.
--
Cezary Tomczyk
http://www.ctomczyk.pl/
-
4. Data: 2013-08-30 12:04:17
Temat: Re: Problem z ładowaniem się strony
Od: Marek <p...@s...com>
W dniu 2013-08-29 13:00, c...@g...com pisze:
>
> Niestety, ale ładowanie <scipt>-ów generalnie blokuje przeglądarkę
> dopóki zawartość nie zostanie ściągnięta i wykonana. Aczkolwiek,
> można to "naprawić" poprzez utworzenie dynamicznie elementu <script>,
Sprytne! Zaraz to wdrożę. Dzięki! :-)
--
Pozdrawiam
Marek
-
5. Data: 2013-08-31 12:55:41
Temat: Re: Problem z ładowaniem się strony
Od: Paweł Piskorz <n...@p...nie.invalid>
W dniu 2013-08-29 13:00, c...@g...com pisze:
> W dniu środa, 28 sierpnia 2013 20:54:56 UTC+2 użytkownik Marek napisał:
>> Witam,
>>
>> Wcisnąłem na stronę reklamę programu partnerskiego. Jest to odwołanie do
>> skryptu JS (<script src=...>), który kończy się poleceniem write(html).
[8<]
>
> Niestety, ale ładowanie <scipt>-ów generalnie blokuje przeglądarkę dopóki zawartość
nie zostanie ściągnięta i wykonana. Aczkolwiek, można to "naprawić" poprzez
utworzenie dynamicznie elementu <script>, np. tak:
>
> var s = document.createElement('script'),
> elm = document.getElementById('test'); // Tutaj ID Twojego elementu div
>
> // s.type = 'text/javascript'; // jeśli używasz HTML5 to możesz atrybut "type"
pominąć
> s.src = 'tutaj URL do script-u';
> if (elm){
> elm.appendChild(elm);
> }
Czasem document.write wywołane już po załadowaniu strony mu jej
kompletnie nie nadpisze?
--
message[autor="PablO"]::after {
content:"Pozdrawiam";
}
-
6. Data: 2013-08-31 16:16:29
Temat: Re: Problem z ładowaniem się strony
Od: Cezary Tomczyk <c...@g...com>
On 2013-08-31 12:55, Paweł Piskorz wrote:
> W dniu 2013-08-29 13:00, c...@g...com pisze:
>> W dniu środa, 28 sierpnia 2013 20:54:56 UTC+2 użytkownik Marek napisał:
>>> Witam,
>>>
>>> Wcisnąłem na stronę reklamę programu partnerskiego. Jest to odwołanie do
>>> skryptu JS (<script src=...>), który kończy się poleceniem write(html).
> [8<]
>>
>> Niestety, ale ładowanie <scipt>-ów generalnie blokuje przeglądarkę
>> dopóki zawartość nie zostanie ściągnięta i wykonana. Aczkolwiek, można
>> to "naprawić" poprzez utworzenie dynamicznie elementu <script>, np. tak:
>>
>> var s = document.createElement('script'),
>> elm = document.getElementById('test'); // Tutaj ID Twojego
>> elementu div
>>
>> // s.type = 'text/javascript'; // jeśli używasz HTML5 to możesz
>> atrybut "type" pominąć
>> s.src = 'tutaj URL do script-u';
>> if (elm){
>> elm.appendChild(elm);
>> }
>
> Czasem document.write wywołane już po załadowaniu strony mu jej
> kompletnie nie nadpisze?
"Nadpisze" czego?
--
Cezary Tomczyk
http://www.ctomczyk.pl/
-
7. Data: 2013-09-02 11:17:58
Temat: Re: Problem z ładowaniem się strony
Od: NotBear <p...@i...pl>
W dniu 2013-08-29 16:25, Cezary Tomczyk pisze:
>> Aczkolwiek, można
>> to "naprawić" poprzez utworzenie dynamicznie elementu <script>, np. tak:
Uprasza sie o sprzatanie po sobie ;-)
Np. tak:
(function(){
var s = document.createElement('script');
s.src = 'test.js';
elm = document.getElementById('test');
if (elm){elm.appendChild(s);}
})();
>> Możesz jeszcze utworzyć <iframe> i tam załadować zewnętrzny kod bez
>> blokowania ładowania strony. Aczkolwiek przy iframie należałoby
>> sprawdzić czy zewnętrzny kod działa prawidłowo i czy są oczekiwane
>> rezultaty.
To prawda, ale jest troche sposobow, zeby problem ominac.
>> Przykładowo cookies z witryn "trzecich" są blokowane przez
>> niektóre przeglądarki jak Firefox 22 czy Safari 6.
Mozilla odsunela wprowadzenie domyslnego blokowania do czasu opracowania
lepszego rozwiazania, bo mieli za duzo problemow z rozpoznawaniem kiedy
blokowac. Nadal trzeba sobie te opcje wlaczyc recznie.
--
NotBear
-
8. Data: 2013-09-02 22:23:20
Temat: Re: Problem z ładowaniem się strony
Od: Cezary Tomczyk <c...@g...com>
On 2013-09-02 11:17, NotBear wrote:
> W dniu 2013-08-29 16:25, Cezary Tomczyk pisze:
>>> Aczkolwiek, można
>>> to "naprawić" poprzez utworzenie dynamicznie elementu <script>, np. tak:
>
> Uprasza sie o sprzatanie po sobie ;-)
> Np. tak:
>
> (function(){
> var s = document.createElement('script');
> s.src = 'test.js';
> elm = document.getElementById('test');
> if (elm){elm.appendChild(s);}
> })();
Można i tak:
function insertScript() {
var s = document.createElement('script'),
elm =
document.getElementById('id_elementu_gdzie_bedzie_sc
ript_code');
s.src = 'test.js';
if (elm){
elm.appendChild(s);
return true;
}
return false;
};
Po zakończeniu wykonania funkcji:
* garbage collector posprząta sam
* można sprawdzić warunek if (insertScript()) i odpowiednio obsłużyć
sobie ewentualny błąd, bo np. "elm" nie istnieje i chcemy o tym wiedzieć :-)
>>> Możesz jeszcze utworzyć <iframe> i tam załadować zewnętrzny kod bez
>>> blokowania ładowania strony. Aczkolwiek przy iframie należałoby
>>> sprawdzić czy zewnętrzny kod działa prawidłowo i czy są oczekiwane
>>> rezultaty.
>
> To prawda, ale jest troche sposobow, zeby problem ominac.
Owszem.
>>> Przykładowo cookies z witryn "trzecich" są blokowane przez
>>> niektóre przeglądarki jak Firefox 22 czy Safari 6.
>
> Mozilla odsunela wprowadzenie domyslnego blokowania do czasu opracowania
> lepszego rozwiazania, bo mieli za duzo problemow z rozpoznawaniem kiedy
> blokowac. Nadal trzeba sobie te opcje wlaczyc recznie.
Ale w Safari 6 nadal jest ta opcja domyślnie włączona.
--
Cezary Tomczyk
http://www.ctomczyk.pl/
-
9. Data: 2013-09-09 10:37:53
Temat: Re: Problem z ładowaniem się strony
Od: Paweł Piskorz <n...@p...nie.invalid>
W dniu 2013-08-31 16:16, Cezary Tomczyk pisze:
> On 2013-08-31 12:55, Paweł Piskorz wrote:
>> Czasem document.write wywołane już po załadowaniu strony mu jej
>> kompletnie nie nadpisze?
>
> "Nadpisze" czego?
"jej" czyli strony.
--
message[autor="PablO"]::after {
content:"Pozdrawiam";
}