wezyrno
28.07.2014, 08:23:37
1.
echo "<script type='text/javascript'>funkcja();</script>";
Niestety funkcja w ogóle się nie wywołuje. Jeżeli zaś podmienie funkcja() na alert("Test"); to wyświetla sie... nie mam pojęcia dlaczego.
2.
window.history.pushState
Wiem jak sprawić dzięki temu, żeby w pasku adresu pojawiała się nazwa podstrony, która wyświetla się przez $.ajax. Problem polega na tym, że gdy ten link, załóżmy: localhost/wiadomości/ wygenerowany w js otworzę ręcznie np. odświeżajac strone... naturalnie wyświetla się komunikat o braku pliku. Moje pytanie brzmi, jak zrobić aby GET przekierowywał nie do pliku ale żeby przechwytywało to JS - wyświetlając stronę w ajaxie?
Z góry dziękuje.
Turson
28.07.2014, 08:24:52
1. Sprawdź konsolę
wezyrno
28.07.2014, 08:31:36
Jak mam sprawdzić konsole, skoro ta funkcja wywoluje sie wraz z otwarciem/odswiezeniem strony
lukasz_os
28.07.2014, 08:43:19
Opcje > Narzędzia i tam szukaj. Ewentualnie rozszerzenia typu Firebug do firefoxa
wezyrno
28.07.2014, 09:29:14
Nic się nie wyświetla, ani w konsoli ani w firebug'u, ktorego posiadam.
Co więcej, gdy tą funkcje wywołam nie z PHP, ale bezpośrednio z JS to działa... dlatego nie rozumiem.
Nikt nie wie czym to może być spowodowane? Po prostu php nie wywołuje mi funkcji - jakiejkolwiek, ale alert() tak...
Turson
28.07.2014, 09:35:03
Może po prostu wywołujesz funkcję zanim jest ona zadeklarowana
wezyrno
28.07.2014, 09:38:28
Dzięki, masz racje.
Wystarczyło dać setTimeout(function(){funkcja();},10);
Ale, gdy komuś załaduje się strona za wolno... to znaczy, że nie wyświetli?
Turson
28.07.2014, 09:43:23
Dodaj to w document.ready i po problemie
wezyrno
28.07.2014, 09:54:46
Stokrotne dzięki

Ma ktoś pomysł co do tego?
Cytat
window.history.pushState
Wiem jak sprawić dzięki temu, żeby w pasku adresu pojawiała się nazwa podstrony, która wyświetla się przez $.ajax. Problem polega na tym, że gdy ten link, załóżmy: localhost/wiadomości/ wygenerowany w js otworzę ręcznie np. odświeżajac strone... naturalnie wyświetla się komunikat o braku pliku. Moje pytanie brzmi, jak zrobić aby GET przekierowywał nie do pliku ale żeby przechwytywało to JS - wyświetlając stronę w ajaxie?
lukasz_os
28.07.2014, 10:05:54
Dodawaj po załadowaniu strony przez ajax w adresie po hashu to co ma byc wyswietlone. Np:
www.domena.pl/#wiadomosci
W jsie po zaladowaniu strony sprawdzasz czy ustawiony jest hash (window.location.hash)i jak jest ładujesz odpowiednią podstronę. do tego aby strona była dobrze indeksowana przez google zainteresuj się tym zagadnieniem:
https://developers.google.com/webmasters/ajax-crawling/ Lektura po angielsku ale który web developer nie zna teraz angielskiego
wezyrno
28.07.2014, 10:22:27
Nie wiem czy dobrze zrozumiałem

To www.domena.pl/#wiadomosci nie będzie indexowane przez google, a to tak?:
www.domena.pl/#!wiadomosci
trueblue
28.07.2014, 10:23:38
Powinieneś sprawdzić URL (obiekt window.location), podmienić historię z pomocą replaceState (nie pushState), załadować ajaxem treść strony z URL.
lukasz_os
28.07.2014, 10:39:56
Masz strone główna w adresie www.domena.pl. Jezeli nie chcesz dodawac strony do google możesz zrobić podstrony typu:
www.domena.pl/#wiadomosci
www.domena.pl/#oferta
www.domena.pl/#kontakt
Po wpisaniu takiego adresu w url powinieneś sprawdzić co jest po # i pobrać ajaxem odpowiednią podstronę.
co do indeksowania przez google to robot rozpoznaje ciąg #! i zamienia to na rządanie GET " _escaped_fragment_"
Tak więc jeżeli Twoje adresy będą miały w adresie:
www.domena.pl/#!wiadomosci
to robot google będzie szukał na twoim serwerze strony o takim adresie:
www.domena.pl?_escaped_fragment_=wiadomosci
więc musisz obsłużyć te wszystkie strony w ten sposób.
Odnośnie ostatniego posta możesz uzyć splita po "=" lub za pomącą indexOf znaleźć gdzie jest znak = i zrobić substringa.
trueblue
28.07.2014, 10:57:05
Nie wiem czemu mieszasz użycie hash z History API.
Dla hasha odpowiednim jest zdarzenie onHashChange, używając History API można z powodzeniem używać standardowych URLi.
wezyrno
28.07.2014, 11:08:28
Rozumiem wszystko, dzięki za objąsnienie.
Wiem też już jak wczytać localhost/#dane
var podstrona = window.location.hash;
if(podstrona == '#dane') {
}
ale jak wczytać (opierając się na powyższym skrypcie)
coś takiego: localhost/#dane=1200 - jak sprawdzić numer następujący po #dane= ?
lukasz_os
28.07.2014, 11:18:16
params = hash.split('=');
key = params[0];
value=params[1];
w wartości key masz "dane", a w value masz "1200".
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.