Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dodanie onload dla każdego zdjęcia
Matrix12
post 26.08.2015, 09:19:00
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 26.08.2015, 09:40:26
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 26.08.2015, 09:43:05
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 26.08.2015, 09:49:09
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 26.08.2015, 10:43:40
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 26.08.2015, 11:26:57
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 26.08.2015, 11:37:52
Post #7





Grupa: Zarejestrowani
Postów: 6 380
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 26.08.2015, 12:12:41
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 26.08.2015, 12:52:10
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 26.08.2015, 16:29:08
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 26.08.2015, 17:07:17
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 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 27.08.2015, 09:24:06
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 27.08.2015, 10:37:35
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 27.08.2015, 12:31:45
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 27.08.2015, 12:37:10
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 smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:24