javascript - 在 <noscript> 中设置 PHP 变量

标签 javascript php noscript

像下面这样的东西不起作用:

<?php $nojs = false; ?>
<noscript>
    <?php $nojs = true; ?>
</noscript>

无论是否启用 JS,都会执行 PHP。但是有没有办法获得类似的效果呢?如果 JS 被禁用,我会尝试设置一个标志,然后相应地显示部分页面。

最佳答案

PHP 在 javascript 之前执行,因此您不能这样做。您可以执行一些操作,例如执行基本的 ajax 请求,并在成功查询 ajax 页面后将 hasjs 存储在 session 变量中。您不会知道这是否只是因为其他原因导致 ajax 请求不成功,或者他们是否禁用了 Javascript。

无论如何让我们试一试:

head 标签中的 jquery 脚本

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$( document ).ready(function() {
    $.get( "hasjs.php", { hasjs: "1"} );
});
</script>

PHP文件(hasjs.php)

<?php
if(isset($_GET['hasjs']))
{
    session_start();
    $_SESSION['hasjs'] = 1;
}
?>

然后您可以访问 session 变量以确定他们是否有基于 ajax 查询的 JS。如果用户没有安装 JS,则不会阻止用户访问该页面。

关于javascript - 在 <noscript> 中设置 PHP 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35887412/

相关文章:

javascript - rhino CodeGenerator Token.EXPR_RESULT 中的错误?

javascript - 将 PHP 数组传递给字符串变量内的 Javascript(HTML 注入(inject))

php - MySQLi Un-prepared-d

php - 谷歌地图实现导致谷歌页面速度问题

javascript - Node & 永远不会启动

php - MySQL启动错误-端口已被使用

css - Stack Overflow-like JavaScript 警告和 w3c HTML 验证

firefox - 在 NoScript 上全局允许 Cloudfront

html - <noscript> 东西 </noscript> 不适用于谷歌浏览器

javascript - 使用ajax/javascript登录jenkins