Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dodanie onload dla każdego zdjęcia
Matrix12
post
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 22.03.2015

Ostrzeżenie: (0%)
-----


Witam,



mam taki problem. Chce aby dla każdego zdjęcia w dokumencie był dodany znacznik onload który wywołuje funkcje ajaxową która zwraca dla niego odpowiednie elementy html. Problem w tym że na mozilli zdjęcie się ładuje i onload wywołuje funkcje ajaxową. Jednak na chromie zdjęcie niby ma onload ale tych elementów nie ładuje... Wydaje mi się że zdjęcie za wczesnie się ładuje a dopiero wtedy jest mu dodany znacznik onload..
Teraz mam to zrobione tak:




$(document).ready(function(){
$(img).load().each(function(){
var pic = $(this).attr("id");
$(this).attr({"onload": "showMarker("+pic+")});
});
});




Próbowałem z $(window).load(); ale to też nie daje rady.. po prostu musze wczytać znaczniki zanim zdjęcie się załaduje.. macie jakieś pomysły jak to zrobić?
Go to the top of the page
+Quote Post
qbas-s
post
Post #2





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


w konsoli masz jakieś błędy?
nie wiem czy tylko tu się pomyliłeś ale to
$(img)
powinno być
$("img")

plik z tym js'em spróbuj wczytać przed </body>
Go to the top of the page
+Quote Post
Matrix12
post
Post #3





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 22.03.2015

Ostrzeżenie: (0%)
-----


Nie odpisałem "" ale w prawdziwym kodzie to mam. Problem w tym że ten kod muszę wywolać w body.. innego wyjścia nie mam. A problem z tym że onload nie działa w chromie
Go to the top of the page
+Quote Post
qbas-s
post
Post #4





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


po co Ci load()?

wystarczy samo $('img').each
Go to the top of the page
+Quote Post
Matrix12
post
Post #5





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 22.03.2015

Ostrzeżenie: (0%)
-----


Okej ale to i tak nic nie daje. próbowałem wszelkich sposóbów. Problem leży w tym , że artykuł jest z TINY MCE i finalnie zdjęcia wychodza bez żadnej klasy i żadnego id.. Ja w document.ready muszę nadać im klasy id, kontenery które ich odaczają i dodać im onload by po załadowaniu zdjęcie opaliło funkcje i wczytało sobie dodatki poprzez ajax.. na mozilli działa to, wydaje mi się że znacznik onload jest dodany wczesniej niż finalnie img znajdzie się w dokumencie.. i jak zdjęcie się załaduje to odpala onload.. natomiast w chrome chyba jest tak że zdjecie się załadowałow tedy dopiero dodaje mu sie onload a onload nie opali bo zdj jest już załadowane...
Go to the top of the page
+Quote Post
qbas-s
post
Post #6





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


Konsolo coś Ci wyrzuca?
Opóźnienie w przypadku jquery nie powinno mieć miejsca - zapewnia Ci to deklaracja $(document).ready - czyli jeśli dokument zostanie załadowany dopiero do akcji wchodzi jquery
Go to the top of the page
+Quote Post
viking
post
Post #7





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Tylko pewnie obrazki są dynamicznie dodawane więc w momencie ready nie istnieją w DOM. Albo problem z cache http://stackoverflow.com/questions/3877027...image-is-cached
Go to the top of the page
+Quote Post
Comandeer
post
Post #8





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Obrazki nie łapią się na $(document).ready, bo to zasób wczytywany PO DOM. Tutaj łapie je jedynie load okna.

Poza tym problemy z wczytywaniem obrazków znane są nie od dziś: https://github.com/desandro/imagesloaded
Go to the top of the page
+Quote Post
qbas-s
post
Post #9





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


Cytat(Comandeer @ 26.08.2015, 13:12:41 ) *
Obrazki nie łapią się na $(document).ready, bo to zasób wczytywany PO DOM. Tutaj łapie je jedynie load okna.


a to nie jest tak, że nie łapie się tylko atrybut src, natomiast znacznik img jest normalnie wczytywany?
Go to the top of the page
+Quote Post
Malukaz
post
Post #10





Grupa: Zarejestrowani
Postów: 77
Pomógł: 4
Dołączył: 16.04.2009

Ostrzeżenie: (10%)
X----


wrzuc gdzies i daj link szybka piłka
Go to the top of the page
+Quote Post
Comandeer
post
Post #11





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


@qbas-s ale ja nie mówię o znaczniku tylko o obrazku (IMG:style_emoticons/default/wink.gif) Tak, znacznik img jest normalnie parsowany i jego [src] jest wrzucane na listę wczytywanych zasobów. Dodać do tego limit jednoczesnych połączeń w browserach i mamy odpowiedź na pytanie czemu obrazki są doczytywane po sparsowaniu i przemieleniu całego DOM.
Go to the top of the page
+Quote Post
qbas-s
post
Post #12





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


Cytat(Comandeer @ 26.08.2015, 18:07:17 ) *
Tak, znacznik img jest normalnie parsowany i jego [src] jest wrzucane na listę wczytywanych zasobów.


faktycznie - zawartość atrybutu src jest w tym przypadku istotna bo jakiś marker ma się tam pojawiać

rozwiązaniem mogłoby być ładowanie zawartości do src za pomocą ajax'a - wtedy po wypełnieniu src moglibyśmy dla danego elementu zastosować zapewne trochę zmodyfikowaną funkcję showMarker.

Oczywiście może być to jakieś rozwiązanie jeśli nie zależy nam na indeksowaniu tych grafik w google

Ten post edytował qbas-s 27.08.2015, 09:49:39
Go to the top of the page
+Quote Post
Pyton_000
post
Post #13





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


a to
$('img').ready()
nie złapie załadowania obrazka?
Go to the top of the page
+Quote Post
Comandeer
post
Post #14





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Nie, bo to łapie wczytanie samego DOM (zdarzenie DOMContentLoaded)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #15





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Fakt. Zajrzałem bo pamiętałem że gdzieś to widziałem.
Miałem gdzies u siebie cos takiego:

Kod
$('img').one('load', function()
        {
            console.log('Image Ready');
        });


I działało to nawet (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 10:37