Check whether Javascript is enabled

2019-02-03 18:41发布

问题:

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.

回答1:

<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.



回答2:

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');
}


回答3:

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;


回答4:

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.



回答5:

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>


回答6:

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.



回答7:

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.



回答8:

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.



回答9:

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;