Skip to content

Commit 1418c71

Browse files
author
Mr_Green
committed
modified code
1 parent d09af34 commit 1418c71

File tree

1 file changed

+28
-37
lines changed

1 file changed

+28
-37
lines changed

resources/slimscroll.js

Lines changed: 28 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
var scroll = (function(){
22
var v = [],
3-
reposition = false,
4-
previousTop = false,
53
w = "wrapper",c = "content",s = "scrollBar",
64
S = "scrollBarContainer",u = " unselectable",
75
// mac animation classes. pass empty string to make the scroll work normally.
86
a = " animate",
97
m = " mac",
108
// properties
119
cN = "className",oT = "offsetTop",pE = "parentElement", pN = "parentNode",
12-
pS = "previousSibling", sE = "srcElement",
10+
pS = "previousSibling", sE = "srcElement",iH = "innerHTML",
1311
cT = "currentTarget",sK = "scroll-k",U = "%",d = ".",
1412

1513
useSlimScroll = function(C){
1614
if(C.offsetHeight < C.scrollHeight){
17-
var h = C.innerHTML,k = v.length;
18-
C.innerHTML = "";
15+
var h = C[iH],k = v.length;
16+
C[iH] = "";
1917
v[k] = {};
20-
v[k][w] = cE(w + u + m, h, C); //cE(w + u + m, "", C);
18+
v[k][w] = cE(w + u + m, h, C);
2119
v[k][S] = cE(S + a, "", C);
2220
v[k][s] = cE(s, "", v[k][S]);
2321

@@ -34,7 +32,7 @@ var scroll = (function(){
3432
v[k][s].style.height = v[k].sP1 + U;
3533

3634
//store the key 'k' in the container
37-
setAttr(sK, k);
35+
v[k][w].setAttribute(sK, k);
3836

3937
// Attaching mouse events
4038
addEvent('mousedown', v[k][s], beginScroll);
@@ -44,28 +42,23 @@ var scroll = (function(){
4442
addEvent('scroll', v[k][w], doScroll);
4543
}
4644
},
47-
setAttr = function(p, k){
48-
v[k][w].setAttribute(p, k);
49-
},
5045
getAttr = function(e, p){
51-
if(!e){return false;}
46+
if(!e){return;}
5247
return e.getAttribute(p);
5348
},
5449
cE = function(c, h, p){
55-
var div = document.createElement('div');
56-
div[cN] = c;
57-
div.innerHTML = h;
58-
p.appendChild(div);
59-
return div;
50+
var d = document.createElement('div');
51+
d[cN] = c;
52+
d[iH] = h;
53+
p.appendChild(d);
54+
return d;
6055
},
6156
setScroll = function(e){
6257
var e = e || event,el = e.target || event[sE],
63-
parentElement = el[pE] || el[pN],
58+
p = el[pE] || el[pN],
6459
k = getAttr(el[pS], sK),i = v[k];
6560

66-
if(!i || parentElement === i[S]){
67-
return false;
68-
}
61+
if(!i || p === i[S]){return;}
6962
i[s][cN] = s;
7063
var ePageY = e.pageY || event.clientY,
7164
top = ((ePageY - (i[w][pE] || i[w][pN])[oT])/i.wH * 100) - i.sP1/2;
@@ -81,8 +74,14 @@ var scroll = (function(){
8174
},
8275
beginScroll = function(e){
8376
// removing selected text
84-
if(window.getSelection){
85-
window.getSelection().removeAllRanges();
77+
// Link: http://stackoverflow.com/a/3171348
78+
var sel = window.getSelection ? window.getSelection() : document.selection;
79+
if (sel) {
80+
if (sel.removeAllRanges) {
81+
sel.removeAllRanges();
82+
} else if (sel.empty) {
83+
sel.empty();
84+
}
8685
}
8786
var e = e || event,
8887
el = e[cT] || e[sE],
@@ -91,9 +90,6 @@ var scroll = (function(){
9190
addEvent('mousemove', document, moveScroll);
9291
addEvent('mouseup', document, endScroll);
9392

94-
// disable scroll event
95-
removeEvent('scroll', i[w]);
96-
9793
i[oT] = i[w][oT];
9894
i.firstY = e.pageY || event.clientY;
9995

@@ -106,26 +102,23 @@ var scroll = (function(){
106102
moveScroll = function(e){
107103
var e = e || event,
108104
k = currentkey,i = v[k],
109-
wrapperScrollTop = i[w].scrollTop,
110105
ePageY = e.pageY || event.clientY,
111-
top = i.reposition + ePageY - i.firstY;
106+
top = (i.reposition + ePageY - i.firstY)/i.wH * 100;
112107

113-
top = (top/i.wH * 100);
114108
if(i.rP1 < top){
115109
top = i.rP1;
116110
}
117111
if(!i.previousTop){
118112
i.previousTop = top + 1;
119113
}
120114
var blnThreshold = top >= 0 && i.firstY > i.offsetTop;
121-
if((i.previousTop > top && blnThreshold) || (blnThreshold && (wrapperScrollTop + i.wH !== i.sH))){
115+
if((i.previousTop > top && blnThreshold) || (blnThreshold && (i[w].scrollTop + i.wH !== i.sH))){
122116
i[s].style.top = top + U;
123-
i.previousTop = top;
124-
var scrollTop = top * i.sH1;
125-
i[w].scrollTop = scrollTop;
117+
i.previousTop = top;
118+
i[w].scrollTop = top * i.sH1;
126119
}
127120

128-
v[k][S][cN] = S;
121+
i[S][cN] = S;
129122
},
130123
endScroll = function(e){
131124
var e = e || event,k = currentkey,i = v[k];
@@ -134,13 +127,11 @@ var scroll = (function(){
134127
removeEvent('mouseup', document);
135128

136129
i.reposition = 0;
137-
// Enable scroll event
138-
addEvent('scroll', i[w], doScroll);
139130
i[S][cN] = S + a;
140131
},
141132
doScroll = function(e){
142-
var e = e || event,wrapper = e[cT] || e[sE],
143-
k = getAttr(wrapper, sK),i = v[k];
133+
var e = e || event,
134+
k = getAttr((e[cT] || e[sE]), sK),i = v[k];
144135
if(!i){return;}
145136
i[S][cN] = S;
146137
var scrollTop = i[w].scrollTop;

0 commit comments

Comments
 (0)