Skip to content
This repository has been archived by the owner on Apr 12, 2024. It is now read-only.

Commit

Permalink
fix(angular.widget): Allow widgets to be styled in IE8 and below
Browse files Browse the repository at this point in the history
Closes #584
  • Loading branch information
dmanek authored and IgorMinar committed Oct 25, 2011
1 parent 7da70af commit 163c799
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 1 deletion.
24 changes: 24 additions & 0 deletions regression/issue-584.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<!DOCTYPE html>
<html xmlns:ng="http://angularjs.org" xmlns:my="http://mynamespace.org">
<head>
<style>
my\:time {color:#00f;display:block;border:1px solid #ccc;background-color:#ddd;}
</style>
<script src="../build/angular.js" ng:autobind></script>
<script>
angular.widget('my:time', function(compileElement){
compileElement.css('display', 'block');
return function(linkElement) {
function update() {
linkElement.text('Current time is: ' + new Date());
setTimeout(update, 1000);
}
update();
};
});
</script>
</head>
<body>
<my:time></my:time>
</body>
</html>
18 changes: 17 additions & 1 deletion src/Angular.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,22 @@ if ('i' !== 'I'.toLowerCase()) {

function fromCharCode(code) { return String.fromCharCode(code); }

/**
* Creates the element for IE8 and below to allow styling of widgets
* (http://ejohn.org/blog/html5-shiv/). This hack works only if angular is
* included synchronously at the top of the document before IE sees any
* unknown elements. See regression/issue-584.html.
*
* @param {string} elementName Name of the widget.
* @returns {string} Lowercased string.
*/
function shivForIE(elementName) {
elementName = lowercase(elementName);
if (msie < 9 && elementName.charAt(0) != '@') { // ignore attr-widgets
document.createElement(elementName);
}
return elementName;
}

var _undefined = undefined,
_null = null,
Expand Down Expand Up @@ -91,7 +107,7 @@ var _undefined = undefined,
/** @name angular.directive */
angularDirective = extensionMap(angular, 'directive'),
/** @name angular.widget */
angularWidget = extensionMap(angular, 'widget', lowercase),
angularWidget = extensionMap(angular, 'widget', shivForIE),
/** @name angular.filter */
angularFilter = extensionMap(angular, 'filter'),
/** @name angular.service */
Expand Down

0 comments on commit 163c799

Please sign in to comment.