Skip to content

Commit 9931ad8

Browse files
committed
Adding compatibility with IE < 9
1 parent 1dbfcb0 commit 9931ad8

File tree

3 files changed

+63
-16
lines changed

3 files changed

+63
-16
lines changed

README.md

+16-4
Original file line numberDiff line numberDiff line change
@@ -52,20 +52,32 @@ Works great on:
5252

5353
- Chrome
5454
- Firefox
55-
- IE 9
55+
- IE 10 and below
5656

5757
Doesn't work on:
5858

59-
- IE 7
60-
- IE 8
59+
- IE 11
6160

6261
TODO
6362
====
6463

6564
- Create minified version of the libraries.
66-
- Add support to IE7/8 (totally feasible, just need to update the code and test it properly).
65+
- Add support to IE11.
6766
- Add support for standard jQuery bind method on 'resize' event.
6867

68+
Release Notes
69+
=============
70+
v0.2
71+
----
72+
73+
- Adds support for IE 8 and below.
74+
75+
v0.1
76+
----
77+
78+
- Implementation based on the [works][1] of [Back Alley Coder][3]
79+
- Adds jQuery plugin version
80+
6981

7082
References
7183
==========

detect-element-resize.js

+42-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
/**
2-
* Detect Element Rezise
2+
* Detect Element Resize
33
*
44
* https://github.com/sdecima/javascript-detect-element-resize
55
* Sebastian Decima
66
*
7-
* Based on the works of Back Alley Coder:
8-
* http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/
7+
* version: 0.2
98
**/
109

1110
function addFlowListener(element, type, fn){
@@ -74,17 +73,17 @@ function addResizeListener(element, fn){
7473
matchFlow({});
7574
}
7675
var events = element._flowEvents || (element._flowEvents = []);
77-
if (events.indexOf(fn) == -1) events.push(fn);
76+
if (indexOf.call(events, fn) == -1) events.push(fn);
7877
if (!resize) element.addEventListener('resize', fn, false);
7978
element.onresize = function(e){
80-
events.forEach(function(fn){
79+
forEach.call(events, function(fn){
8180
fn.call(element, e);
8281
});
8382
};
8483
};
8584

8685
function removeResizeListener(element, fn){
87-
var index = element._flowEvents.indexOf(fn);
86+
var index = indexOf.call(element._flowEvents, fn);
8887
if (index > -1) element._flowEvents.splice(index, 1);
8988
if (!element._flowEvents.length) {
9089
var sensor = element._resizeSensor;
@@ -97,4 +96,41 @@ function removeResizeListener(element, fn){
9796
delete element._flowEvents;
9897
}
9998
element.removeEventListener('resize', fn);
99+
};
100+
101+
/* Array.indexOf for IE < 9 */
102+
var indexOf = function(needle) {
103+
if(typeof Array.prototype.indexOf === 'function') {
104+
indexOf = Array.prototype.indexOf;
105+
} else {
106+
indexOf = function(needle) {
107+
var i = -1, index = -1;
108+
109+
for(i = 0; i < this.length; i++) {
110+
if(this[i] === needle) {
111+
index = i;
112+
break;
113+
}
114+
}
115+
116+
return index;
117+
};
118+
}
119+
120+
return indexOf.call(this, needle);
121+
};
122+
123+
/* Array.forEach for IE < 9 */
124+
var forEach = function(action, that) {
125+
if(typeof Array.prototype.forEach === 'function') {
126+
forEach = Array.prototype.forEach;
127+
} else {
128+
forEach = function(action, that) {
129+
for (var i= 0, n= this.length; i<n; i++)
130+
if (i in this)
131+
action.call(that, this[i], i, this);
132+
};
133+
}
134+
135+
return forEach.call(this, action, that);
100136
};

jquery.resize.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
/**
2-
* Detect Element Rezise Plugin for jQuery
2+
* Detect Element Resize Plugin for jQuery
33
*
44
* https://github.com/sdecima/javascript-detect-element-resize
55
* Sebastian Decima
66
*
7-
* Based on the works of Back Alley Coder:
8-
* http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/
7+
* version: 0.2
98
**/
109

1110
(function ( $ ) {
@@ -87,17 +86,17 @@
8786
matchFlow({});
8887
}
8988
var events = element._flowEvents || (element._flowEvents = []);
90-
if (events.indexOf(fn) == -1) events.push(fn);
89+
if ($.inArray(fn,events) == -1) events.push(fn);
9190
if (!resize) element.addEventListener('resize', fn, false);
9291
element.onresize = function(e){
93-
events.forEach(function(fn){
92+
$.each(events, function(index, fn){
9493
fn.call(element, e);
9594
});
9695
};
9796
};
9897

9998
function removeResizeListener(element, fn){
100-
var index = element._flowEvents.indexOf(fn);
99+
var index = $.inArray(fn, element._flowEvents);
101100
if (index > -1) element._flowEvents.splice(index, 1);
102101
if (!element._flowEvents.length) {
103102
var sensor = element._resizeSensor;

0 commit comments

Comments
 (0)