1. 程式人生 > >jquery的mCustomScrollbar滾動條: 無法獲取未定義或 null 引用的屬性“frameElement”

jquery的mCustomScrollbar滾動條: 無法獲取未定義或 null 引用的屬性“frameElement”

原文地址:這裡寫連結內容

在ie8下如果一個頁面巢狀一個包含mCustomScrollbar滾動條那麼如果推動滾動條就會報無法獲取未定義或 null 引用的屬性“frameElement”的錯誤 。
搜尋一下程式碼

var o=t.type,a=t.target.ownerDocument!==document[e(frameElement)
.offset().top,e(frameElement).offset().left]:null,n=W()&&t.target
.ownerDocument!==top.document[e(t.view.frameElement
).offset().top, e(t.view.frameElement).offset().left]:[0,0];

修改為:

var myView = t.view||window;
var o=t.type,a=t.target.ownerDocument!==document?[e(frameElement).
offset().top,e(frameElement)
.offset().left]:null,n=W()&&t.target.ownerDocument!==top.document?
[e(myView.frameElement).offset().top
,e(myView.frameElement). offset().left]:[0,0];

問題就解決了問題主要是處在

t.view.frameElement

作者的意圖很明顯就是想要找到引用頁面的iframe元素,所以作者試圖通過event的view屬性獲取當前的頁面物件,但是很可惜IE8 event的view屬性是undefined,所以程式出錯。既然作者只是為了找到當前的window,那麼程式碼完全可以改為

var myView = t.view||window;

意思很明顯就是有view就用view沒有就用window。問題就這樣解決了。