I currently have the code below (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';
?>
I want Main.php
to load only if JavaScript is enabled, and Nojs.php
to load only is JavaScript is disabled.
Surrounding Nojs.php
with tags does nothing (See below code)
<?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';
?>
Since I know the PHP cannot access the browser as it is done server-side, is it possible to try to use HTML (Like I attempted) or other JavaScript to get it to work? Thanks in advance.
EDIT:
Creating a new file for nojs.php
and using meta refresh works, but there is a noticeable delay. The page starts loading the original URL and then redirects to the other. A visitor can quite easily cancel the page load process and stop the page load before the redirect. They will have a partly loaded page, but all the content they really need will be there. Is there a way to force an immediate redirect (Yes, "content" is set to "0" per the below anwser)?
CodePudding user response:
Create another PHP file with no js version when first PHP loaded it will check if no js support will redirect to no js version of PHP
<noscript>
<meta http-equiv="refresh" content="0;url=nojs-version.php">
</noscript>
Edit: It is also mentioned by W3C as technique without confusing user
https://www.w3.org/TR/WCAG20-TECHS/H76.html