首页 > 解决方案 > 没有互联网连接时,如何禁用所有锚点?

问题描述

我每 5 秒检查一次,看看我是否在线,如果我不在线,那么我想禁用所有链接。

<script type="text/javascript"> 

setInterval(function(){
 var status = navigator.onLine ? 'enabled-link' : 'disabled-link';/* check whether online */
 document.getElementById('anchor').innerHTML = status /* display 'anchor' somewhere */
 if(status == 'disabled-link';) {     
 var anchors = document.getElementsByTagName("a");
 for (var i = 0; i < anchors.length; i++) {
    anchors[i].onclick = function() {return(false);};
                                          };    
                                }
                      }, 5000);
</script>

标签: javascript

解决方案


出了什么问题?

if你的陈述中有一个分号,这是导致问题的原因。我也更喜欢使用 e.preventDefault() 来停止超链接的正常运行。我不确定简单地返回 false 是否有效。

解决方案:

请改用此代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Simple async sync example</title>
    </head>
    <body>
        <p id="anchor"></p>
        <a href="https://www.w3schools.com/">Visit W3Schools.com!</a>
        <a href="https://www.w3schools.com/">Visit W3Schools.com!</a>
        <a href="https://www.w3schools.com/">Visit W3Schools.com!</a>
        <a href="https://www.w3schools.com/">Visit W3Schools.com!</a>
        
    </body>
    <script>
        setInterval(function(){
            var status = navigator.onLine ? 'enabled-link' : 'disabled-link';/* check whether online */
            document.getElementById('anchor').innerHTML = status; /* display 'anchor' somewhere */
        
            if(status ==  'disabled-link') {
                var anchors = document.getElementsByTagName("a");
                for (var i = 0; i < anchors.length; i++) {
                    anchors[i].onclick = function(e) {e.preventDefault();};
                };
            }
        }, 400);
    </script>
</html>

推荐阅读