关于 Jquery 的加载问题,只有刷新页面部分 js 才生效

2020-04-10 23:08:50 +08:00
 canadahetian

我的网站,jquery 代码,只有刷新页面,菜单栏才能生效,而且一会生效一会又不生效,太奇怪了 初次加载不生效,刷新一次页面才生效,或者需要刷新好几次页面才生效,再刷新又不一定生效了.没有规律

请前端大神指点一下. 我的网站是:www.cakevin.com 点击左边的 menu 测试

我的 base 页面 JS 代码是:

<script>get_mennus_list1("1")</script>

调用 first_load.js 页面

我的 base 页面 JS 代码引人顺序是:

<script src="{% static 'js/jquery.min.js' %}"></script> <script src="{% static 'js/first_load.js' %}"></script> <script src="{% static 'js/bootstrap.min.js' %}"></script>

详情看网站源码,先谢谢了

2026 次点击
所在节点    问与答
25 条回复
learningman
2020-04-11 01:18:41 +08:00
不想看代码,盲猜 pjax,pjax 要重载
话说你这个需求不付费有点离谱。
lxk11153
2020-04-11 01:36:50 +08:00
已找到问题,来来来,付费咨询 Contact: cXEvd3g6IDQ0Mzk3NDE1OQ== (b​a​s​e​6​4)
canadahetian
2020-04-11 07:15:51 +08:00
@lxk11153 怎么付费啊?
canadahetian
2020-04-11 07:18:04 +08:00
@learningman
@lxk11153
我发现问题应该出在我另外一个 js 文件

<script src="{% static 'js/nifty.min.js' %}"></script>

的加载问题,好像是

<script>get_mennus_list1("1")</script>

还没有执行完成,
/nifty.min.js 就已经开始加载了.

是这个问题吗?,还在尝试解决中.
cydian
2020-04-11 08:16:11 +08:00
@canadahetian 浏览器 F12
先看 js 加载完成没。
用 console.log 打印下加载完成顺序,
然后再逐个排查。
lxk11153
2020-04-11 08:56:24 +08:00
@canadahetian #3 加我 come on baby.
canadahetian
2020-04-11 10:09:47 +08:00
@cydian 现在就是这么干的,现在不知道,怎么才能,让 一段 js 代码执行完成后,在加载另外一个 js 文件,
两个 JS 文件同时加载,导致,第一个还没加载完,第二个就执行了
canadahetian
2020-04-11 10:11:40 +08:00
@lxk11153
哥,我看了一下你主页问的问题,感觉.....
我在等等别的高手吧.
Track13
2020-04-11 10:29:55 +08:00
@canadahetian 加上 defer 看看,或者动态插入。
cydian
2020-04-11 10:41:18 +08:00
@canadahetian 你对 js 有误解吧。
canadahetian
2020-04-11 11:10:09 +08:00
@Track13 defer 不是 go 语言的吗? 我 django 项目


@cydian 我打了断点,视乎发现点问题了,www.cakevin.com 这个里面在 get_mennus_list1("1") 打了断点,不确定是不是这个问题,还在按照你的方法排查.
Track13
2020-04-11 11:13:16 +08:00
@canadahetian 外链的 js 可以加 deder 关键字延迟执行。那你觉得不行就动态插入,和语言有什么关系。
rain0002009
2020-04-11 11:19:41 +08:00
首先菜单是异步加载的,然后加载后我并没有看到初始化菜单的代码 大概率都不在同一个 js 里面
所以生不生效就看 请求跑的是不是比菜单初始化代码快
canadahetian
2020-04-11 11:45:45 +08:00
@rain0002009 感谢,终于说到点子上了,现在就是说你说的问题,就看哪个 JS 先跑完,你看一下我网站,你刷新一下就明白了,我现在解决如何才能 100%确定,加载完生成 html 的 js 后在调用给菜单添加属性的 JS,我前端接触不深,弄起来有点困难.


@Track13 非常感谢,我的 JS 不是外链,全部是站内的.
canadahetian
2020-04-11 11:47:30 +08:00
@rain0002009 初始化菜单的代码在 first_load.js 里面
lxk11153
2020-04-11 11:56:18 +08:00
@canadahetian #8 _(¦3 」∠)_ 被鄙视了,感觉我一定要 问 /答 一些看起来很高级的问题才能解决你的这个问题?
到底怎样才能成为你眼中的高手呢? java/js 是我的主语言,相关的 css/vue/jquery 都行,Python 也可以,之前还帮别人盲搜解决了个 win32gui 问题: https://stackoverflow.com/a/32698102/10298463 (这是我的回答)
canadahetian
2020-04-11 12:07:58 +08:00
@lxk11153 没有鄙视的意思,我就是觉的,这个么小问题,会者不难,难着不会啊,还搞怎么复杂,不够程序员精神啊,我做管理太多年了,现在回到加拿大,没办法需要从新捡起代码,所以问题比较 low,我以前写代码的时候,只要我会的基本上都直接帖代码,不爱墨迹,你说这个问题,你已经搞定了,我说了我问你再哪里付款,刚进 V2 不太熟练,你缺钱的话,可以去 freelancer,里面很多项目可以赚些钱.
Track13
2020-04-11 12:11:27 +08:00
@canadahetian 我说的外链是指单独一个文件 src 引入,没有内联在 html 里。
难道是我理解有误?我没有打开你网站,看其他回复,你需要的不就是把初始化菜单的 js 推迟执行吗?
defer 关键字在所有元素解析完成之后,DOMContentLoaded 事件触发之前完成。
canadahetian
2020-04-11 12:18:25 +08:00
@Track13 有如此高科技操作,我去试试,我现在是 html 里面的 get_mennus_list1("1") 方法调用 first_load.js
<body><script>get_mennus_list1("1")</script></body>
然后等 get_mennus_list1("1") 方法全部跑完,first_load.js 里面的代码后,再调用 nifty.min.js 这个 JS,
如果是 nifty.min.js 比 first_load.js 先跑完,menu 的展开属性<li class="active">就失效了,
lxk11153
2020-04-11 12:20:09 +08:00
@canadahetian #17
1. 没有刻意接私活的想法,滑水时看到就免费帮助或者接一下
2. 结合 1 楼,所以就有了 2 楼
3. 至于你说的什么如何 pay,你加下 2 楼就行了,v2 网页没这功能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/661329

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX