最近经常遇到1个JS异常,Chrome运行,偶尔有问题,想复现的时候,却又不出来。
jquery-2.1.4.min.js?_=1498552203335:3 Uncaught RangeError: Maximum call stack size exceeded.
at HTMLDivElement.trigger (jquery-2.1.4.min.js?_=1498552203335:3)
at Object.trigger (jquery-2.1.4.min.js?_=1498552203335:3)
at HTMLDivElement.<anonymous> (jquery-2.1.4.min.js?_=1498552203335:3)
at Function.each (jquery-2.1.4.min.js?_=1498552203335:2)
at n.fn.init.each (jquery-2.1.4.min.js?_=1498552203335:2)
at n.fn.init.trigger (jquery-2.1.4.min.js?_=1498552203335:3)
at n.eval(eval at globalEval (jquery-2.1.4.min.js?_=1498552195035:2), <anonymous>:6:16198)
at HTMLDocument.f (jquery-2.1.4.min.js?_=1498552203335:2)
at HTMLDocument.dispatch (jquery-2.1.4.min.js?_=1498552203335:3)
at HTMLDocument.r.handle (jquery-2.1.4.min.js?_=1498552203335:3)
不过,今天又在网上喵了几眼,来了灵感。
这篇文章说的是其中1种原因,大致瞧了瞧,感觉好复杂。
还有Stackoverflow之类的答案,都是列出了现象和常见例子,但是并不能解决我的问题。
灵感:函数递归调用,不还是“重复”的一种例子么。
会不会是我的代码里,重复引入了1个js了。
还真是。
我的项目情况:
A主体列表页->B新增对话框-加载1个新页面--C在新增对话框页面里,再选择用户。
B和C里都引入了公共的js。
把C页面里公共js去掉就行了,让他直接使用B父页面引入的。
为了验证缓存等情况,把Chrome缓存和Cookie所有数据清了,反复新增,又出现了刚刚的问题。
让人崩溃。
同样的道理,把B页面,引入公共的js,也去掉了。
让B直接使用A父页面的。
再次清除Chrome缓存和Cookie,Ok了。
2017年6月27日
朝林A座