【问题标题】:Load different PHP files based on JavaScript availability根据 JavaScript 可用性加载不同的 PHP 文件
【发布时间】:2021-12-30 15:51:25
【问题描述】:

我目前有以下代码(PHP)

<?php
    require_once __DIR__.'/includes/Connect.php';
    require_once __DIR__.'/includes/Nojs.php';
    require_once __DIR__.'/includes/Main.php';
    require_once __DIR__.'/includes/footer.php';
?>

我希望 Main.php 仅在 JavaScript 启用时加载,Nojs.php 仅在 JavaScript 被禁用时加载。

用标签包围Nojs.php 什么都不做(见下面的代码)

<?php
    require_once __DIR__.'/includes/Connect.php';
?>
<noscript>
    <?php
        require_once __DIR__.'/includes/Nojs.php';
    ?>
</noscript>
<?php
    require_once __DIR__.'/includes/Main.php';
    require_once __DIR__.'/includes/footer.php';
?>

由于我知道 PHP 无法访问浏览器,因为它是在服务器端完成的,是否可以尝试使用 HTML(就像我尝试过的那样)或其他 JavaScript 来让它工作? 提前致谢。

编辑:

nojs.php 创建一个新文件并使用元刷新工作,但有明显的延迟。该页面开始加载原始 URL,然后重定向到另一个。访问者可以很容易地取消页面加载过程并在重定向之前停止页面加载。他们将有一个部分加载的页面,但他们真正需要的所有内容都在那里。有没有办法强制立即重定向(是的,根据下面的答案,“内容”设置为“0”)?

【问题讨论】:

标签: javascript php html require


【解决方案1】:

在第一次加载 PHP 时创建另一个没有 js 版本的 PHP 文件,它将检查是否没有 js 支持将重定向到没有 js 版本的 PHP


<noscript>
  <meta http-equiv="refresh" content="0;url=nojs-version.php">
</noscript>    

编辑:W3C 也提到它是一种不会混淆用户的技术
https://www.w3.org/TR/WCAG20-TECHS/H76.html

【讨论】:

  • 我认为使用元刷新被认为是不好的做法,不应该使用。我错了吗?
  • 我不这么认为,请详细说明,是什么原因?
  • 用官方数据说话w3.org/TR/WCAG20-TECHS/H76.html上面写的很清楚The objective of this technique is to enable redirects on the client side without confusing the user.
  • 什么意思? noscript 标签用于检查浏览器是否支持 js。我只是让数据在这里再次讨论developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript
  • 虽然“内容”设置为 0,但重定向需要一些时间(如 2 秒)。在那个时候,访问者可以取消页面加载,没有任何影响。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-11
  • 2012-11-01
  • 2011-10-06
  • 2016-05-28
  • 2012-04-22
  • 2023-01-26
相关资源
最近更新 更多