Skip to content

Commit 22d93e0

Browse files
committed
fixes to enable ie
1 parent 259c2bb commit 22d93e0

File tree

14 files changed

+82
-51
lines changed

14 files changed

+82
-51
lines changed

lib/nodeserver/server.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
var sys = require('sys'),
2+
http = require('http'),
3+
fs = require('fs');
4+
http.createServer(function (req, res) {
5+
res.writeHead(200, {});
6+
sys.p('GET ' + req.url);
7+
var file = fs.createReadStream('.' + req.url);
8+
file.addListener('data', bind(res, res.write));
9+
file.addListener('error', function( error ){
10+
sys.p(error);
11+
res.end();
12+
});
13+
file.addListener('close', bind(res, res.end));
14+
}).listen(8000);
15+
sys.puts('Server running at http://127.0.0.1:8000/');
16+
17+
function bind(_this, _fn) {
18+
return function(){
19+
return _fn.apply(_this, arguments);
20+
};
21+
}

nodeserver.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node lib/nodeserver/server.js

scenario/widgets.html

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
22
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
33
<head>
4-
<link rel="stylesheet" type="text/css" href="style.css"></link>
4+
<link rel="stylesheet" type="text/css" href="style.css"/><!--
55
<script type="text/javascript" src="../lib/jquery/jquery-1.4.2.js"></script>
6-
<script type="text/javascript" src="../src/angular-bootstrap.js#autobind"></script>
6+
--><script type="text/javascript" src="../src/angular-bootstrap.js#autobind"></script>
77
</head>
8-
<body ng-init="$window.$scope = this">
8+
<body ng:init="$window.$scope = this">
99
<table>
1010
<tr>
1111
<th width="330">Description</th>
@@ -72,12 +72,12 @@
7272
<tr><th colspan="3">Buttons</th></tr>
7373
<tr>
7474
<td>ng-change<br/>ng-click</td>
75-
<td>
76-
<form ng-init="button.count = 0">
75+
<td ng:init="button.count = 0">
76+
<form>
7777
<input type="button" value="button" ng-change="button.count = button.count + 1"/> <br/>
7878
<input type="submit" value="submit" ng-change="button.count = button.count + 1"/><br/>
7979
<input type="image" src="" ng-change="button.count = button.count + 1"/><br/>
80-
<a href="" ng-click="button.count = button.count + 1">action</a>
80+
<a href="" ng:click="button.count = button.count + 1">action</a>
8181
</form>
8282
</td>
8383
<td>button={{button}}</td>
@@ -93,5 +93,6 @@
9393
<td></td>
9494
</tr>
9595
</table>
96+
-->
9697
</body>
9798
</html>

src/Angular.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ function uppercase(value){ return isString(value) ? value.toUpperCase() : value;
112112
function trim(value) { return isString(value) ? value.replace(/^\s*/, '').replace(/\s*$/, '') : value; }
113113
function nodeName(element) { return (element[0] || element).nodeName; }
114114
function isElement(node) {
115-
if (node && node[0]) node = node[0];
115+
if (node && !node.item && isDefined(node.length) && isDefined(node[0]))
116+
node = node[0];
116117
return node && node.nodeName;
117118
}
118119

src/Browser.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Browser.prototype = {
2929
bind: function() {
3030
var self = this;
3131
self.document.bind("mouseover", function(event){
32-
self.hoverListener(jqLite(event.target), true);
32+
self.hoverListener(jqLite(msie ? event.srcElement : event.target), true);
3333
return true;
3434
});
3535
self.document.bind("mouseleave mouseout click dblclick keypress keyup", function(event){
@@ -43,8 +43,11 @@ Browser.prototype = {
4343
},
4444

4545
addCss: function(url) {
46-
var head = jqLite(this.document[0].getElementsByTagName('head')[0]),
47-
link = jqLite('<link rel="stylesheet" type="text/css"></link>');
46+
var doc = this.document[0],
47+
head = jqLite(doc.getElementsByTagName('head')[0]),
48+
link = jqLite(doc.createElement('link'));
49+
link.attr('rel', 'stylesheet');
50+
link.attr('type', 'text/css');
4851
link.attr('href', url);
4952
head.append(link);
5053
},

src/Compiler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ function eachAttribute(element, fn){
185185
var i, attrs = element[0].attributes || [], chld, attr, name, value, attrValue = {};
186186
for (i = 0; i < attrs.length; i++) {
187187
attr = attrs[i];
188-
name = attr.name;
188+
name = attr.name.replace(':', '-');
189189
value = attr.value;
190190
if (msie && name == 'href') {
191191
value = decodeURIComponent(element[0].getAttribute(name, 2));

src/directives.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,20 @@ angularDirective("ng-bind", function(expression){
2626
return function(element) {
2727
var lastValue, lastError;
2828
this.$onEval(function() {
29-
var error, value = this.$tryEval(expression, function(e){
30-
error = toJson(e);
31-
});
29+
var error,
30+
value = this.$tryEval(expression, function(e){
31+
error = toJson(e);
32+
}),
33+
isElem = isElement(value);
34+
if (!isElem && isObject(value)) {
35+
value = toJson(value);
36+
}
3237
if (value != lastValue || error != lastError) {
3338
lastValue = value;
3439
lastError = error;
3540
elementError(element, NG_EXCEPTION, error);
3641
if (error) value = error;
37-
if (isElement(value)) {
42+
if (isElem) {
3843
element.html('');
3944
element.append(value);
4045
} else {
@@ -177,7 +182,7 @@ angularWidget("@ng-repeat", function(expression, element){
177182
angularDirective("ng-click", function(expression, element){
178183
return function(element){
179184
var self = this;
180-
element.click(function(){
185+
element.bind('click', function(){
181186
self.$tryEval(expression, element);
182187
self.$root.$eval();
183188
return false;

src/jqLite.js

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@ function jqClearData(element) {
3737
}
3838

3939
function JQLite(element) {
40-
if (element.length && element.item) {
40+
if (isElement(element)) {
41+
this[0] = element;
42+
this.length = 1;
43+
} else if (isDefined(element.length) && element.item) {
4144
for(var i=0; i < element.length; i++) {
4245
this[i] = element[i];
4346
}
4447
this.length = element.length;
45-
} else {
46-
this[0] = element;
47-
this.length = 1;
4848
}
4949
}
5050

@@ -92,8 +92,13 @@ JQLite.prototype = {
9292
bubbleEvent = bubbleEvent || fn.call(self, event);
9393
});
9494
if (!bubbleEvent) {
95-
event.preventDefault();
96-
event.stopPropagation();
95+
if (msie) {
96+
event.returnValue = false;
97+
event.cancelBubble = true;
98+
} else {
99+
event.preventDefault();
100+
event.stopPropagation();
101+
}
97102
}
98103
};
99104
eventHandler.fns = [];
@@ -109,13 +114,6 @@ JQLite.prototype = {
109114
this[0].dispatchEvent(evnt);
110115
},
111116

112-
click: function(fn) {
113-
if (fn)
114-
this.bind('click', fn);
115-
else
116-
this.trigger('click');
117-
},
118-
119117
replaceWith: function(replaceNode) {
120118
this[0].parentNode.replaceChild(jqLite(replaceNode)[0], this[0]);
121119
},

src/scenario/Steps.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ angular.scenario.WHEN = {
2929
// emulate the browser behavior which causes it
3030
// to be overridden at the end.
3131
var checked = input.checked = !input.checked;
32-
element.click();
32+
element.trigger('click');
3333
input.checked = checked;
3434
},
3535
select:function(){
3636
var element = this.element(this.at);
3737
var path = "option[value=" + this.option + "]";
3838
var option = this.assert(element.find(path));
39-
option[0].selected = !option[0].selected;
39+
option[0].selected = !option[0].selected;
4040
element.change();
4141
}
4242
};
@@ -48,7 +48,7 @@ angular.scenario.THEN = {
4848
if (_.isArray(this.should_be))
4949
should_be = JSON.stringify(should_be);
5050
if (element.text() != should_be)
51-
throw "Expected " + should_be +
51+
throw "Expected " + should_be +
5252
" but was " + element.text() + ".";
5353
}
5454
},

test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
java -jar lib/jstestdriver/JsTestDriver.jar --tests BinderTest
1+
java -jar lib/jstestdriver/JsTestDriver.jar --tests all

0 commit comments

Comments
 (0)