Is there a way to check whether Javascript is enabled or supported by the browser? If it's not supported, I would like to redirect the user to a user-friendly error page.
I am using jQuery and the PHP Zend Framework.
Is there a way to check whether Javascript is enabled or supported by the browser? If it's not supported, I would like to redirect the user to a user-friendly error page.
I am using jQuery and the PHP Zend Framework.
<noscript><meta http-equiv="refresh" content="1;url=error.html"></noscript>
This will redirect to an error page if script is disabled. Just replace error.html
with the URL of your error page.
As yet another option, you can (though it requires a second page visit) use javascript to set a cookie.
If the cookie exists server-side (they have javascript) render the page as normal. During the absense of the cookie, you can either use a Location
redirect, or render the appropriate [stripped-down] template to accommodate their lack of javascript support.
page html
<script type="text/javascript">
document.cookie = 'hasJS=true';
</script>
page php
if (isset($_COOKIE['hasJS'])){
// normal page render
}else{
header('Location: http://mysite.com/index-nojs.php');
}
Whether or not javascript is enabled is only known from within the context of a browser, so the best you can do is write some browser-side code to set a flag based on if javascript is enabled or not. One possibility is do something like
<noscript><img src="/javascript_disabled.php"></noscript>
and
// contents of javascript_disabled.php
$_SESSION['javascript_disabled'] = 1;
As the default, send out the version without javascript. There you include a little piece of javascript that redirects to the dynamic version. This will only get executed when js is enabled.
You can make a simple "landing page" for users without javascript AND add a javascript redirection to the javascript-enabled version of site.
Something like this:
...
<html>
...
<script type="text/javascript">
window.location.replace("/hasjs");
</script>
Piece of cake!
Encompass your entire Javascript page in one DIV.
Overlay a second DIV of equal size that contains your non-Javascript page. Give that DIV an id and a high z-index:
div id="hidejs" style="z-index: 200"
In this second non-JS DIV, have your very first code be Javascript that sets this DIV's visibility to hidden:
document.getElementById.("hidejs").style.visibility = "hidden";
No Javascript enabled? Nothing will happen and they'll see the overlying non-Javascript page.
Javascript enabled? The overlying non-Javascript page will be made invisible and they'll see the underlying Javascript page.
This also lets you keep the whole page in one file, making modifications easier, rather than trying to manage two files for the same page.
Use <noscript>
tags to include a meta-redirect if the page does not have JavaScript.
<noscript>
tags are called when the browser connecting to the page does not have JavaScript.
Bring the user to the error page by default, and have a javascript redirect execute in the section of the page. Have the redirect push the user to the real page.
If they don't have javascript enabled, they won't get redirected and the rest of the page (error page) will load.
Yes. Make you have the latest jQuery.
Javascript:
$(function(){ $('#jsEnabled2').html('Yes it is') })
PHP:
$js - 'No';
$jscheck = 'Javascript Enabled: ';
$jscheck .= '<span id="jsEnabled">'.$js.'</span>';
print $jscheck;