PHP &
它是否正确? 如果没有,那么正确的语法是什么
我是php的新手因此想学习。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php // Check browser for JavaScript support $jsSupport='true'; ?> <noscript><?php $jsSupport='false'; ?></noscript> <?php if ($jsSupport == 'false') { include ('no-script-layout.php'); } else { include ('regular-layout.php'); } ?> |
或者有更好的方法来处理这个问题吗?
您可以使用
1 2 3 4 5 | <!-- Redirect to another page (for no-js support) (place it in your <head>) --> <noscript><meta http-equiv="refresh" content="0;url=nojs-version.php"></noscript> <!-- Show a message --> <noscript>You don't have javascript enabled! Please download Google Chrome!</noscript> |
Modernizr的
处理javascript检测(&amp;功能)的更好方法是使用Modernizr:http://modernizr.com
看看这个问题:HTML"no-js"类的目的是什么?
一个基本的例子(没有Modernizr)
您可以在页面加载时将
1 2 3 4 5 6 7 8 9 10 11 | // When the DOM is ready & loaded, do this.. $(document).ready(function(){ // Remove the `no-js` and add the `js` (because JS is enabled (we're using it!) $('body').removeClass('no-js').addClass('js'); // Assign it to a var so you don't traverse the DOM unnecessarily. var useJS = $('body').hasClass('js'); if(useJS){ // JS Enabled } }); |
上面的代码是modernizr如何工作的一个非常基本的例子。我强烈建议只使用它。
看看Modernizr
要做到这一点(如果你真的需要从PHP知道用户是否启用了JS):
1 | // AJAX call to your PHP script to tell it that JS is enabled |
它不起作用,因为php是一个服务器端预处理器,除了浏览器的原始请求中提供的内容之外,它无法了解用户的浏览器,其中不包括其当前的脚本功能。
基本上,如果你想拥有超出简单的
浏览器。
您还必须考虑浏览器是一个特别恶劣的编程环境,因为用户或任何插件可以随时执行任何操作,例如禁用javascript。因此,您必须在PHP代码中仔细检查浏览器发送的所有内容,无论是通过表单还是AJAX,以确保它完整且不会损坏。
如果禁用JavaScript,这非常有用
HTML
1 2 3 | <noscript> This Application works best with JavaScript enabled </noscript> |
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <style> #noscript-warning { font-family: sans-serif; position: fixed; top: 0; left: 0; width: 100%; z-index: 101; text-align: center; font-weight: bold; font-size: 120%; color: #fff; background-color: #ae0000; padding: 5px 0 5px 0; </style> |
它不起作用,因为
不,这是不正确的。所有代码都被解释,为什么你使用字符串文字而不是实际的布尔值?更不用说,你在if语句中使用赋值运算符而不是比较运算符。
我认为您可以在脚本中执行此操作,在index.php脚本中,记下此代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php //true will be returned only if javascript is not enabled $JSEnabled ="<noscript>true</noscript>"; //then you can do echo $JSEnabled to see the result yourself //in a condition statement ... if($JSEnabled) { // ... code for JS Enabled } else { // ... code not JS Disabled } |
更新:
1 2 3 4 5 6 7 8 9 10 | $js = null; $js = (boolean) '<noscript>false</noscript>'; //the noscript text : false is shown when no js support detected in your browser. this value will be converted to a boolean value for testing purpose. if($js) { //if $js gets the no script text , that means that the browser is not supporting the js, so this line will check if $js is set to false , the else statement is fired , otherwise the if statement is fired echo 'Your javascript is enabled'; } else { echo 'Your javascript is disabled'; } |
我通过在noscript标记中包装HTML注释标记让它为我工作:
1 2 3 4 5 6 | <noscript><!-- </noscript> <?php $a = 42; echo $a; ?> <noscript> --> </noscript> |
我有疑虑进入它...但是它有效,所以...让我知道是否有一些奇怪的情况它不会...希望这有助于你的问题:)
你可以用jQuery和CSS做到这一点:
1 2 3 4 5 6 7 8 | <body style='display: none;'> <!--- Content goes here ---> </body> //jQuery $("body").css("display","block"); //Pure JavaScript document.body.style.display="block"; |
怎么样 ?
1 2 3 4 5 6 7 8 9 10 11 12 13 | <noscript> <?php //do the include thing right here $a=1; ?> </noscript> <?php if(isset($a)){ //do nothing }else { //add the include u want }; <? |