如果浏览器支持JS,如何显示加载动画


How to show loading animation if browser supports JS

如果浏览器支持JS,我想显示加载动画。如果JavaScript被禁用,那么图像将显示,但永远不会隐藏,在这种情况下。为此,我直接在<body>标记之后编写了以下代码:

<?php
$results = get_browser();
if ($results["javascript"] == 1) {
echo '<div id="loading"><img src="core/design/img/load/load.gif"/></div>';
}
?>
 

我的js是这样的

$(window).load(function(){
$('#loading').fadeOut(600); 
}); 
   

得到错误信息browscap ini directive not set in。我怎样才能实现我的想法?

你可以直接使用:

<body>
//set the div to hidden by default
<div id="loading" style="display:none"><img src="core/design/img/load/load.gif"/></div>
//place this code directly below the loading div, it will run before page/dom is loaded
<script type="text/javascript">
    document.getElementById('loading').style.display = 'block';
</script>
<script type="text/javascript">
    $(function() {
        //this will run after the page has loaded
        $('#loading').fadeOut(600);
    });
</script>
...

如果你想做到底什么水上运动。(尽管上面的解决方案更快),您可以这样做:

<body>
<script type="text/javascript">
    //if JavaScript is enabled, append the loading div to be body
    $('body').append('<div id="loading"><img src="core/design/img/load/load.gif" /></div>');
</script>
<script type="text/javascript">
    $(function() {
        //this will run after the page has loaded
        $('#loading').fadeOut(600);
    });
</script>
...

在您的HTML中,您可以这样做:

<html class="no-js">
...

然后,一旦页面加载,通过JavaScript将no-js类替换为js类。

$(window).load(function(){
    $('html').removeClass('no-js').addClass('js');
}); 

最后,在CSS中,如果浏览器支持js,则显示正在加载的图像,如果浏览器不支持js则隐藏它。

.js #loading {
    display: block;
}
.no-js #loading {
    display: none;
}

明白了吗?

get_browser函数必须下载相应的INI文件并包含在PHP.ini文件中。

与其试图弄清楚用户是否启用了javascript,不如从渐进式增强的角度来构建站点,这样它就可以适用于所有用户,而不管他们的浏览器设置如何。

或者,你可以让javascript设置一个cookie,然后检查cookie是否存在于PHP中,这绝不是100%万无一失的方法,但可以为您的情况工作。