我正在構建一個AJAX深層鏈接網站。PHP:如何確定瀏覽器是否支持PHP中的JavaScript?
我想讓PHP加載頁面的所有HTML代碼,如果用戶試圖訪問該網站與JavaScript不支持的瀏覽器或如果它是一個搜索爬蟲。基本上PHP將返回整個頁面。相反,當用戶試圖訪問使用Javascript支持的瀏覽器的網站時,我希望PHP只返回模板代碼,並讓Javascript(AJAX)負責其餘部分。基本上PHP只會加載設計元素,並讓Javascript用內容填充它們。
我看着PHP的get_browser()
函數,但它似乎並不是這樣一個可靠的工具。業界的做法是,瀏覽器是否支持Javascript或者它是使用PHP的搜索爬蟲?
背景:
爲什麼我希望自己的網站有這樣的行爲。
由於我想通過加載地址:example.com
加載主頁,它不會向PHP發送任何查詢,PHP會返回主頁的HTML代碼。但是,當用戶嘗試加載以下頁面時會導致問題:example.com#foo
。因此,對於此示例,PHP將返回主頁,一旦加載主頁,Javascript(AJAX)將更改內容,以便它顯示#foo
的正確內容。這會讓用戶看到主頁,因此加載時間會更慢,用戶體驗也不會那麼好。但是,如果我的PHP腳本可以計算出,如果使用Javascript支持的瀏覽器使用試圖加載頁面時,它只會返回網站,它沒有內容的模板)和JavaScript將填充該模板的內容無論是應該顯示爲#foo。另一方面,如果Javascript非分離瀏覽器或爬蟲將嘗試訪問頁面example.com#foo
,則返回主頁。
我正在使用SWF地址(http://www.asual.com/swfaddress/)庫進行深層鏈接。
編輯
謝謝你們。之前我沒有想到使用<noscript></noscript>
。
這是我決定要做的。 PHP在默認情況下將加載如example.com
或example.com#foo
頁面(這是基本相同example.com
從自定義片段PHP的觀點不會被髮送到服務器)與<noscript>
標籤內的空白(只是視覺的模板)有關內容主頁。這樣,使用javascript的用戶將不會看到主頁,並且AJAX將根據#foo
片段填充頁面的內容。另一方面,搜索抓取工具和沒有javascript的用戶將會看到一個主頁。
再次感謝您。我認爲這是非常簡單和優雅的解決方案。如果您有任何進一步的建議,請發表評論或其他答案。
考慮服務器端JavaScript像node.js - http://net.tutsplus.com/tutorials/javascript-ajax/learning-serverside-javascript-with-node-js/ – ajreal 2010-11-17 05:42:59
好主意。不幸的是,並非所有的服務器提供商都安裝了它,或者至少我沒有使用它。 – miki725 2010-11-17 15:00:23