【问题标题】:Why wont this code detect if javascript is blocked?为什么这段代码不能检测 javascript 是否被阻止?
【发布时间】:2013-05-24 19:50:52
【问题描述】:

好的,我创建了一个新问题来澄清我的旧问题,可以在这里找到:Check if certain text was outputted to the screen PHP 目前我有这个代码:

<?php
echo "

<noscript><h2>! JavaScript is not enabled!!! Features will not work !</h2></noscript>

<script type=\"text/javascript\">
    document.cookie= \"jsEnabled=true\";
</script>
";

if (isset($_COOKIE['jsEnabled'])) {
    // Javascript is enabled!
}
 else {
     die("JavaScript is not enabled!");
 }

?>

我不确定为什么这不起作用!如果 JS 被禁用,它应该杀死 PHP!谢谢!

【问题讨论】:

  • 我刚刚在我的系统上测试了这个,工作正常。唯一可能是您的浏览器不接受 cookie。
  • 当一个人第一次访问该页面时,这应该不起作用,因为首先执行 PHP,然后提供 HTML。
  • 确保刷新页面 - 它只会在 javascript 运行客户端后在第二次加载时起作用。
  • 谢谢大家!这让一切都非常清楚。

标签: php javascript noscript


【解决方案1】:

JavaScript 处理 PHP 完全发出页面之后,而不是之前,也不是共生的。因此,您的 PHP 调用仅适用于对页面的第二次调用,而不是第一次调用。

也就是说,如果您首先接受 cookie。

如果你想阻止没有 JS 的用户在页面上使用界面,可以考虑用纯 JS 生成界面。更可靠。

【讨论】:

  • @pattyd:没问题,很高兴它有帮助! (Grrr,距离那个难以捉摸的银色徽章还有 1 米……)
  • 还有 9 分钟,但我可以!
  • @Sébastien Renauld,等一下 :)
  • @pattyd:没有必要道歉。 :-) 将来,记住。执行堆栈通常是 PHP->JavaScript(在 DOM 加载之后或期间),而不是内联的。
  • @MarcelGwerder:我知道。我之前提供了 10 页长的答案,让他们接受 +0,不知何故,一个(正确的)三行简明答案得分两位数。这可能是由于第三方选民的注意力跨度(即“这个答案太长,我退出了”),这可以解释为什么长而详细的答案真的只会得到 OP 的支持。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 2015-05-17
  • 1970-01-01
  • 2012-07-06
相关资源
最近更新 更多