我应该在laravel 5中检测到浏览器是否支持Javascript。 据我所知,我必须使用。但我不确定哪个是我可以在laravel 5中使用的第一个php文件?
我应该将它包含在public / index.php中吗?看起来不正确。 期待你的帮助。
答案 0 :(得分:4)
你不能用PHP做到这一点。您可以在HTML中使用<noscript>
标记。
以下是如何做到这一点:
<noscript>
This page needs JavaScript activated to work.
</noscript>
如果未启用JS,则将执行HTML文档中的代码块。您可以将其放在刀片模板中。
答案 1 :(得分:0)
这可能与其他有关javascript检测的问题重复,您可能会找到答案here。通过谷歌搜索,我在github上找到了一些可能有用的东西link。它似乎支持检查JavaScript支持。它可能正在使用我向您展示的stackoverflow链接中找到的相同技术。
手动方式可以通过重定向到像这样的cookie拾取
来完成<强>的index.php 强>
<?php
if(isset($_COOKIE["javascript_checked"]))
{
$GLOBALS["javascript_enabled"] = isset($_COOKIE["javascript_enabled"]) ? true : false;
}
else
{
setcookie("javascript_check_original_request", "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"], time()+3600);
header("Location: http://" . $_SERVER["HTTP_HOST"] . "/detectjs.php.php");
exit;
}
var_dump($GLOBALS["javascript_enabled"]); // prints out the result
<强> detectjs.php 强>
<?php
setcookie("javascript_checked", "true", time()+3600);
?>
<meta http-equiv="refresh" content="1;url=<?php echo $_COOKIE["javascript_check_original_request"]; ?>" />
<script type="text/javascript">
/**
* A function to simplify the process of creating a cookie
* @param string name
* @param string value
* @param int days
*/
function createCookie(name,value,days) {
if (days)
{
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
createCookie("javascript_enabled", "true", 1); // creates a cookie that says javascript is enabled for 1 day
</script>
这将检查cookie以查看cookie拾取是否已经发生,如果它还没有,那么它将重定向到设置cookie发送cookie的页面,如果启用了javascript,那么javascript将创建一个cookie,表明它已启用。然后它将重定向回原始请求,这样用户就不会注意到除了第二次延迟之外的差异,即detectjs脚本重定向回原始请求。
现在检查已经完成,php可以将一个布尔值存储到$ GLOBALS变量中,该变量包含一个布尔值,用于是否启用了javascript。您可以在laravel中的任何php文件中引用它,以便在使用
启用javascript时做出决定if($GLOBALS["javascript_enabled"])
{
}
else
{
}
这可以通过上面的过程轻松完成,但是如果你想使用我链接的laravel库,那就更有力了。
答案 2 :(得分:0)
虽然您不能单独依赖PHP来检测是否启用了Javascript,但您可以使用Javascript来帮助检测Javascript是否已启用。
Javascript可以设置Cookie。因此,如果用户没有cookie,那么很好地表明Javascript未启用。如果用户确实拥有cookie,那么用户可能已启用Javascript。 (虽然你不能100%肯定。)
<script>
window.onload = function() {
document.cookie = "hasjs=true";
}
</script>
现在您可以使用PHP来检查cookie是否存在。
if ($_COOKIE['hasjs'] == 'true') {
// js enabled.
}
Javascript也可以get requests。您可以向&#34;隐藏&#34;提出请求。 PHP脚本。如果脚本从未收到get,则表明Javascript未启用。如果脚本收到get,则用户可能启用了Javascript。 (但同样,你不能百分百肯定。)
<script>
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", "/detectjs", true);
xmlHttp.send(null);
</script>
收到GET后,您可以记下此用户已启用javascript以供将来参考。