首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP:如何确定浏览器是否支持PHP中的javascript?

PHP:如何确定浏览器是否支持PHP中的javascript?
EN

Stack Overflow用户
提问于 2010-11-16 18:08:47
回答 5查看 2.8K关注 0票数 5

我正在构建一个AJAX深链接网站。

如果用户试图使用Javascript不支持的浏览器访问站点,或者是搜索爬虫,我希望PHP加载页面的所有HTML代码。基本上,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脚本能够发现,如果使用with site支持的浏览器试图加载页面,它将只返回网站的模板,该模板不包含任何内容),而Javascript将使用为#foo显示的内容填充该模板。另一方面,如果Javascript不分离的浏览器或爬虫将尝试访问页面example.com#foo,主页将被返回。

我正在使用SWFaddress (http://www.asual.com/swfaddress/)库进行深度链接.

编辑

谢谢你们。我以前没有想过要使用<noscript></noscript>

以下是我决定要做的事。默认情况下,PHP将加载页面,如example.comexample.com#foo (从PHP的角度来看,这与example.com本质上是一样的,因为根据定义,片段不会发送到服务器)空白(仅为可视模板),主页内容的<noscript>标记在其中。这样,使用javascript的用户将不会看到主页,AJAX将根据#foo片段填充页面的内容。另一方面,搜索爬虫和没有javascript的用户将看到主页。

再次感谢您。我认为这是非常简单和优雅的解决方案。如果您有任何进一步的建议,请张贴评论或其他答复。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-11-16 18:15:34

您不能使用PHP来完成这个任务。但是,如果没有javascript,则可以使用noscript标记重定向到另一个php页面:

代码语言:javascript
运行
复制
<noscript>
<meta http-equiv="refresh" content="0; URL=nojavascript.php">
</noscript>
票数 5
EN

Stack Overflow用户

发布于 2010-11-16 18:12:19

这是不可能做到这一点的方式,你正在努力做到这一点。

很少有人关掉JS而不知道。

PHP不会在#之后传递任何东西,只有javascript才能用它完成任何事情。因此,即使PHP能够确定浏览器是否打开了javascript,它仍然无法读取#。

票数 1
EN

Stack Overflow用户

发布于 2010-11-16 18:16:56

您可以在一些<NOSCRIPT>标记中包含一个链接,它将用户指向类似于example.com#foo?javascript=disabled的东西。

不幸的是,浏览器没有报告是否启用JS,因此无法从简单的HTTP中知道是否应该发送依赖于JS的页面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4197431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档