Strona ładuje się w nieskończoność

0

Witam,
mam problem z moją stroną firmową. Po kliknięciu w zakłądke "promocje" strona ładuje się w nieskończoność.
Używając FF bopod IE8 wszystko działa. Doszedłem do tego że powoduje to pewien js (wklejam kod).
Ktoś ma pomysł jak temu zaradzić?

$(document).ready(
    function(){
        $('#content_load').load('promocje/drukc.html');
    
        $('#link1').click(
        function()
        {
            $('#content_load').load('promocje/drukc.html');
        }
        );
        
        $('#link2').click(
        function()
        {
            $('#content_load').load('promocje/drukw.html');
        }
        );
        
        $('#link3').click(
        function()
        {
            $('#content_load').load('promocje/reklama.html');
        }
        );
        
        $('#link4').click(
        function()
        {
            $('#content_load').load('promocje/inne.html');
        }
        );
});

dzięki...

0

jeszcze link do niedziałającej strony
http://www.sr-source.pl/promocje.html

0

W tej chwili u mnie to działa pod Firefoxem.

Rzeczywiście są tam jednak pewnie problemy z kodem.

Po pierwsze, w pliku ze skryptem, który podałeś, jest na początku... tag HTML otwierający skrypt O_o. Cały plik http://www.sr-source.pl/js/jquery-common2.js wygląda tak:

<script type="text/javascript">

$(document).ready(
	function(){
		$('#content_load').load('promocje/drukc.html');
	
		$('#link1').click(
		function()
		{
			$('#content_load').load('promocje/drukc.html');
		}
		);
		
		$('#link2').click(
		function()
		{
			$('#content_load').load('promocje/drukw.html');
		}
		);
		
		$('#link3').click(
		function()
		{
			$('#content_load').load('promocje/reklama.html');
		}
		);
		
		$('#link4').click(
		function()
		{
			$('#content_load').load('promocje/inne.html');
		}
		);
});

Tam ma być sam kod JavaScript, a plik zaczyna się tagiem HTML. Należy usunąć pierwszą linię. Jeśli coś tam powoduje błędy przy samym ładowaniu strony, to linia $('#content_load').load('promocje/drukc.html'); (pierwsza linia w funkcji anonimowej przekazanej do ready). Pozostałe linijki to tylko dodawanie funkcji obsługujących zdarzenie click.

Poza tym najwyraźniej do strony są dołączone... dwie różne wersje biblioteki jQuery. Wypadałoby wywalić tę starszą (1.3) i zostawić tylko nowszą.

0

tą pierwszą linijkę dodałem po to żeby strona się w ogóle wyświetlała. Teraz ją usunąłem i jak wejdziesz jeszcze raz w ten link nic się pod ff nie wyświetli. Strona ładuje się w nieskończoność z białym tłem.
Nie mam pojęcia jak to naprawić :-/ masz może jakiś pomysł?

0

średnio znam jQuery, ale jak dla mnie to wina linijki $('#content_load').load('promocje/drukc.html'); która wykona się po załadowaniu dokumentu.
do tego używasz dwóch jQuery naraz - 1.3.2 i 1.4.2 - jaki jest tego sens?

0

@ŁF:
O tym to ja już pisałem w pierwszym poście, ale pytanie brzmi czemu tak się dzieje. Samo wywołanie $(selektor_elementu_docelowego).load(url) powoduje załadowanie ajaxem danego URL-a do elementu na stronie. Tutaj elementem jest jeden div w środku strony. Samo load powinno zmienić jedynie wnętrze tego elementu. A tu mamy jakieś przekierowanie, czy coś -- cała strona znika.

Nie chce mi się tego dokładnie debugować, bo raz, że to w tym wypadku utrudnione, a dwa, że na stronie są jakieś dziwności. Typu dwa jQuery. Albo skrypt z home.hit.stat.pl dołączany (niepoprawnie!) przez serwer na sam koniec każdej odpowiedzi. Szperając gdzieś w tych skryptach do statystyk dotarłem np. do funkcji wait wykonującej ciurkiem pętlę JavaScript aż nie minie pewien czas (!!!), co powoduje totalny freeze przeglądarki. Mamy tam też document.write, które w XHTML-u jest teoretycznie niedopuszczalne i samo to mogłoby spowodować podobny efekt, jeśli przeglądarka podchodziłaby do parsowania strony restrykcyjnie.

Autorowi zalecałbym choćby przeniesienie się na lepszy serwer. Pomimo tych wpadek z podwójnym jQuery widać, że stara się dbać o kod. HTML jest generalnie porządny, semantyczny, praktycznie nie zawiera błędów. A te dołączane na siłę przez serwer statsy wszystko psują i cholera wie jak się zachowują, gdy wrzuca się ich duplikaty na stronę używając ajaxa. Normalne serwery pozbawione tych reklam nie są przecież dzisiaj jakoś drogie...

0

serwer mam na homie, płace za niego dużo a jestem średnio zadowolony. Cała ta operacja miała na celu wyświetlanie oferty do poszczególnych linków bez przeładowania całej strony.
Na dysku działa pieknie, tak samo w IE. Trudno, zrobię do każdego podstronę, chciałem tego uniknąć ale tak będzie szybciej i łatwiej.
Dzięki za pomoc...

0

@jasikj:
W tym przypadku prawdopodobnie o wiele lepiej jest użyć nie Ajaxa, tylko zwykłych podstron. Zauważ proszę, że te linki Ajaxowe w menu po lewej NIE będą odczytane przez roboty wyszukiwarek. Będą więc potężne trudności z zaindeksowaniem całej treści na Twojej witrynie -- googlebot może nigdy nie zobaczyć zawartości podstron ładowanych w ten sposób Ajaxem (chyba że gdzieś indziej będą zwykłe linki do tych podstron). Nie jest to w zasadzie wada Ajaxu, tylko niższej jakości skryptów. Skrypty wysokiej jakości byłyby wykonane techniką tzw. nieinwazyjnego JavaScriptu (ang. unobtrusive JavaScript) i w HTML-u byłyby normalne linki do podstron. Google by je widział. Skrypty na stronie podpinałyby się pod te linki i zmieniały ich domyślne zachowanie, dokładając funkcjonalność ajaxową.

Jeśli masz komercyjny serwer to powinieneś być w stanie coś zrobić z tymi skryptami do statystyk. Dołączanie ich do każdego żądania, również ajaxowego, jest cokolwiek bezsensowne i w dodatku psuje Ci praktycznie poprawny kod (tam jest chyba tylko jeden błąd oprócz tego elementu script na końcu). Inna sprawa, że Home'a specjalnie nie polecam, a też miałem kiedyś wątpliwą przyjemność pracy na tamtych serwerach.

0

@bswierczynski:
DZIAŁA, DZIĘKI WIELKIE!!
problemem był ten głupi skrypt zliczający na homie o którym pisałeś. Wyłączyłem go i wszystko śmiga.
Jeszcze raz dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1