Bir AJAX derin bağlantılı site yapıyorum.PHP: Tarayıcının javascript'i PHP'de destekleyip desteklemediğini nasıl belirleyebilirim?
Kullanıcı siteye Javascript destekli olmayan bir tarayıcıyla veya bir arama tarayıcısıysa siteye erişmeye çalışıyorsa, PHP'nin sayfanın tüm HTML kodunu yüklemesini istiyorum. Temel olarak PHP tüm sayfayı geri döndürecektir. Tersi durumda, kullanıcı siteye Javascript destekli tarayıcı ile erişmeye çalışırken, PHP'nin sadece şablon kodunu döndürmesini ve Javascript'in (AJAX) diğerlerinin ilgilenmesine izin vermesini istiyorum. Temel olarak PHP sadece tasarım öğelerini yükler ve Javascript'in bunları içerikle doldurmasına izin verir.
PHP'nin get_browser()
işlevine baktım, ancak böyle güvenilir bir araç gibi görünmüyor. Endüstrinin uygulaması, tarayıcının Javascript'i destekleyip desteklemediğini ya da PHP kullanan bir arama tarayıcısı olup olmadığını görüyor mu?
Arkaplan: Sitenin bu davranışı istiyorum Neden
.
Ana sayfanın yüklenmesini istemiş olduğumdan beri, PHP'ye herhangi bir sorgu göndermeyen adres: example.com
, PHP ana sayfanın HTML kodunu döndürür. Ancak, kullanıcı aşağıdaki sayfayı yüklemeye çalıştığında sorunlara neden olur: example.com#foo
. Bu nedenle, bu örnek için PHP ana sayfayı geri yükleyecektir ve ana sayfa yüklendikten sonra, Javascript (AJAX), içeriği #foo
için uygun içerik gösterecek şekilde değiştirecektir. Bu, kullanıcının ana sayfayı görmesini sağlayacaktır, bu nedenle yükleme süresi daha yavaş olacak ve kullanıcı deneyimi bu kadar hoş olmayacaktır. Ancak, eğer PHP betiğimde, Javascript destekli tarayıcı ile kullanım sayfayı yüklemeye çalışıyorsa, yalnızca içeriği olmayan web sitesinin şablonunu döndürecektir) ve javascript'in bu şablonun içeriğiyle ne varsa #foo için gösterilmesi gerekiyordu. Öte yandan, Javascript'in ayrılmamış bir tarayıcı veya bir tarayıcı sayfanın example.com#foo
sayfasına erişmeye çalışacaksa, ana sayfa geri dönecektir.
Derin bağlantı için SWFaddress (http://www.asual.com/swfaddress/) kitaplığını kullanıyorum.
Düzenleme teşekkürler çocuklar. Daha önce <noscript></noscript>
kullanmayı düşünmedim.
İşte yapmaya karar verdim. Varsayılan olarak PHP, example.com
veya example.com#foo
(esas olarak example.com
ile PHP'nin bakış açısından aynıdır, çünkü tanıma göre parçalar sunucuya gönderilmez) boş (sadece görsel şablon) <noscript>
etiketi içeriğinin içeriğine ana sayfa Bu şekilde javascript kullanıcıları ana sayfayı görmeyecek ve AJAX sayfanın içeriğini #foo
parçasına göre dolduracaktır. Öte yandan, javascript içermeyen tarayıcıları ve kullanıcıları bir giriş sayfası görür.
Tekrar teşekkürler. Bence bu oldukça basit ve zarif bir çözüm. Başka önerileriniz varsa, lütfen bir yorum veya başka bir yanıt gönderin.
Sunucu tarafı javascript gibi düşünün node.js - http://net.tutsplus.com/tutorials/javascript-ajax/learning-serverside-javascript-with-node-js/ – ajreal
İyi fikir. Ne yazık ki, tüm sunucu sağlayıcıları yüklememiş veya en azından kullanıyorum değil. – miki725