首页 > 个人网站为什么每次点击导航都要执行一次loading呢

个人网站为什么每次点击导航都要执行一次loading呢

网址:www.canonwu.me
问题1:为什么每次点击导航都要执行一次loading呢?
问题2:当我点击所在页面的导航按钮时,就会跳转到首页,并且页面还错乱了,这是怎么回事呢?
大神们一定帮我看看啊,谁帮我解决了问题,微信红包伺候!!!


我手机端看的,现在没电脑查看网页代码

你应该是用了别人的插件或者现成代码 loading效果应该是在有文件在加载中,没加在完毕的提示,或者只是起个延迟显示的作用,这个你可以自己看下js代码,或者我明天用电脑了看

页面错位我得看哈代码


看了一下,两个问题应该都是粗心写错造成的,我直接写在哪个JS文件里有错好了。

第一个问题
sea.js加载了main.js,在main.js中,有一个监听事件window.onhashchange,具体写的是:

window.onhashchange = function() {
    window.btn = true;
    if (window.btn) {
        window.location.reload();
    }

};

这个window.btn,在后面的导航按钮的点击事件绑定函数中,有一个window.btn = false的操作,我想应该是想判断如果锚点变化是由点击导航引起的,就不刷新页面,否则则刷新?
但是在你main.js这个监听事件绑定的函数中,你在if判断之前加了这行window.btn = true,也就是说只要锚点变化了,肯定就会将window.btn的值变为true,底下的判断也必将执行刷新页面,你这个判断就没有意义了。每次页面都重新加载,当然会出现你设定的loading。

第二个问题
sea.js加载的hidden.js中,对导航中的每个a标签进行了点击事件的监听,并且绑定了一个函数。函数里是根据当前锚点,通过一个switch判断决定具体初始化哪一个div对吧。具体初始化的方法就是require xxOUT这个文件中的init函数,例如当前锚点是skill,就去require skillOut.js。
所有的XXOut.js应该都是复制粘贴然后略作修改吧,所以都有一个共同的错误。
以skillOut.js为例:

for (i = 0; i < aDiv.length; i++) {
    if (aDiv[i].dataset.hash = 'skill') {
        window.location.hash = hash;
        require('show.js').show(aA, aDiv);
    }
}

看到了吗,你的if判断里面用一个等号,不仅没有判断,而且直接赋值了。结果就是一个for循环,把所有的内容div的data-hash都赋值成了当前锚点的值,在接下来的show函数中,因为所有内容div的data-hash都符合判断条件,就会把你所有的内容全都展示出来了。

这个问题其实是存在于每一次点击导航跳转中的,之所以只在点击所在页面导航时暴露,是因为只有这个情况下是触发hashchange,也就没有发生页面刷新。其余的时候都因为页面刷新了,重新加载了正确的页面,所以没有暴露。

【热门文章】
【热门文章】