Sto costruendo un sito collegato ad AJAX.PHP: come determinare se il browser supporta javascript in PHP?
Desidero che PHP carichi tutto il codice HTML della pagina se l'utente sta tentando di accedere al sito con un browser JavaScript non supportato o se si tratta di un crawler di ricerca. Fondamentalmente PHP restituirà l'intera pagina.
Al contrario, quando l'utente tenta di accedere al sito con il browser supportato da Javascript, voglio che PHP restituisca solo il codice del modello e che Javascript (AJAX) si occupi del resto. Fondamentalmente PHP caricherà solo elementi di design e permetterà a Javascript di inserirli nel contenuto.
Ho esaminato la funzione get_browser()
di PHP, tuttavia sembra che non sia uno strumento così affidabile. Qual è la pratica del settore se il browser supporta Javascript o è un crawler di ricerca che utilizza PHP?
Sfondo:
perché voglio il sito per avere questo comportamento.
Poiché desidero caricare la pagina iniziale caricando l'indirizzo: example.com
, che non invia alcuna query a PHP, PHP restituisce il codice HTML della home page. Ciò tuttavia causa problemi quando l'utente tenta di caricare la seguente pagina: example.com#foo
. Quindi, per questo esempio, PHP restituirà la home page e una volta caricata la home page, Javascript (AJAX) cambierà il contenuto in modo che mostri il contenuto corretto per #foo
. Ciò consentirà all'utente di visualizzare la home page, pertanto il tempo di caricamento sarà più lento e l'esperienza utente non sarà così piacevole. Tuttavia se il mio script PHP può capire che se l'uso con il browser supportato da Javascript sta tentando di caricare la pagina, restituirà solo il modello del sito web, che non ha contenuto) e il javascript popolerà quel modello con contenuto qualunque sia dovrebbe essere visualizzato per #foo. D'altra parte, se il browser Javascript non separato o un crawler proveranno ad accedere alla pagina example.com#foo
, verrà restituita la home page.
Sto utilizzando la libreria SWFaddress (http://www.asual.com/swfaddress/) per il deep-linking.
Modifica
Grazie ragazzi. Non pensavo di usare <noscript></noscript>
prima.
Ecco cosa ho deciso di fare. PHP di default caricherà pagine come example.com
o example.com#foo
(che è essenzialmente lo stesso di example.com
dal punto di vista di PHP poiché i frammenti per definizione non vengono inviati al server) vuoto (solo modello visivo) con tag <noscript>
all'interno per il contenuto del home page. In questo modo gli utenti con javascript non vedranno la home page e AJAX popolerà il contenuto della pagina in base al frammento #foo
. D'altra parte, i crawler di ricerca e gli utenti senza javascript vedranno una home page.
Grazie ancora. Penso che questa sia una soluzione piuttosto semplice ed elegante. Se hai ulteriori suggerimenti, per favore pubblica un commento o un'altra risposta.
consideri javascript lato server come node.js - http://net.tutsplus.com/tutorials/javascript-ajax/learning-serverside-javascript-with-node-js/ – ajreal
Buona idea. Sfortunatamente non tutti i provider di server hanno installato o almeno quello che sto usando non lo fa. – miki725