原因
particles.js是一个相对较老的js库,它使用了arguments.callee
这个相对古老的js特性,这个特性可以用来在函数未知时实现递归调用,但是ES5的严格模式中已经将该特性删除了,MDN对其的描述如下:
警告: 在严格模式 (en-US)下,第 5 版 ECMAScript (ES5) 禁止使用 arguments.callee()。当一个函数必须调用自身的时候,避免使用 arguments.callee(),通过要么给函数表达式一个名字,要么使用一个函数声明。
更多信息在此处查看。
解决方案:修改particles.js源码
在particles,js的源码文件中搜索上面三个关键字,发现它只使用了callee
,没有使用caller
,且callee
也只使用了一次,那就好办了。
首先定位到它使用callee
的地方:
大约在1421行出,然后我们给这个函数加一个名字并且把使用callee的地方改为直接使用函数名调用即可, 修改后的代码如下:
注意这个函数名可以随便取,只要前后对应即可。
至此,问题解决。