正在寻找一种方法来检测使用PHP禁用的javascript(不要想在html中使用noscript)


looking for a way to detect javascript disabled using PHP (don't want to use noscript in html)

我想知道用户是否启用了javascript,我不想在HTML中使用无脚本标记,因为我不想让用户下载javascript和无脚本标记的额外脚本。。

有人有主意吗?

您可以使用AJAX请求一个php页面,在那里您可以设置一个cookie,该cookie将用作JS激活的标志。在js脚本中,如果设置了cookie,则可以检查是否存在cookie,这意味着用户启用了js的

不幸的是,这不是你能做的。PHP代码通常在浏览器呈现任何代码之前就完全执行了。

浏览器中Javascript的禁用不会在初始头请求中报告给PHP。最接近的方法是使用Javascript对PHP进行AJAX调用,以检测Javascript的存在。如果回调失败,则可以认为它已被禁用。

类似的问题:php能检测javascript是否打开吗?

test.php
<script>
//// query string
if(/[?&]js=1/g.test(window.location.href) == false)
    window.location.href += (window.location.href.indexOf("?") == -1 ? "?" : "&") + "js=1";
//// OR session cookie
if(document.cookie.search(/(^|;)js=1/) == -1) {
     document.cookie = "js=1; path=/";
     document.location.reload();
}
</script>
<?php
$_GET["js"];
////
$_COOKIE["js"];
?>

有很多方法可以做到这一点。使用JavaScript在客户端设置cookie,然后重新加载页面,或者执行上述操作并向URL添加查询字符串。PHP可以检查cookie或查询字符串,并设置一个会话变量,说明该用户启用了JS。