日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

$(...).nicescroll is not a function报错分析

發布時間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 $(...).nicescroll is not a function报错分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述:

瀏覽器報$(...).niceScroll is not a function的錯。

問題分析:

將echarts.js刪除后,此報錯沒了,初步判斷是兩個js沖突引起。

將echarts放在最后時,也無報錯,但是頁面重復加載后還會有報錯。

后查看nicescroll.Js文件

適配amd的jquery擴展時會有如下書寫:

(function(f){"function"===typeof define?&&?define.amd???define(["jquery"],f)?:?f(jQuery)})(function(f){...})

NVIDIA顯卡先加載nicescroll的時候是type define 為undefined;會走f(jQuery)此時正常無報錯。

?

但是查看echarts.js 時發現里面定義了define對象,如下圖:

并且若是在加載echarts之后再加載nicescroll時取到的define是echarts里的define對象,并且define.amd為一個object對象,如下圖

會影響到nicescroll.js的判斷而走amd的jquery對象define(["jquery"]?,?f),但實際上是NVIDIA,所以這個jquery對象不合適,從而導致里面擴展的nicescroll()方法無法生效,產生$(...).nicescroll()?is?not?a?function的報錯。

解決辦法:

?

一、若頁面無重復加載js

解決辦法:

直接將nicescroll.Js放在echarts.js前面加載即可。

?

二、若頁面有重復加載(即 雖然nicescroll放在了echarts前面,但是頁面重復加載后會再次加載nicescroll,此時已經有了echarts里的define對象,會影響對于amd的判斷)

快速解決方法:

不考慮amd判斷時,去掉"function"===typeof define&&define.amd判斷直接走f(jQuery)即可。

Ps:沒有amd的顯卡所以未做amd測試,so...對amd的影響未可知。

完美解決辦法:

全部替換echarts里面的define對象和方法--包含下方所有js對應調用的define方法

Ps:全部替換的注意里面有undefined字段影響全部替換,可將undefined全部替換為別的不影響替換的字段如undifined,之后再替換define為define_echarts,最后將undifined替換回undefined即可。

請尊重原創!轉載請注明出處!謝謝

?

總結

以上是生活随笔為你收集整理的$(...).nicescroll is not a function报错分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。