diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 82e6b016d1cb..5e11e611ee8e 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -29,8 +29,8 @@ https://plnkr.co or similar (you can use this template as a starting point: http
**Angular version:** 1.x.y
-**Browser:** [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]
+**Browser:** [all | Chrome XX | Firefox XX | Edge XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]
**Anything else:**
-
\ No newline at end of file
+
diff --git a/docs/config/templates/ngdoc/api/directive.template.html b/docs/config/templates/ngdoc/api/directive.template.html
index 7e14ce0c6411..b30bdb0451f2 100644
--- a/docs/config/templates/ngdoc/api/directive.template.html
+++ b/docs/config/templates/ngdoc/api/directive.template.html
@@ -18,9 +18,6 @@
Usage
{% if doc.restrict.element %}
as element:
- {% if doc.name.indexOf('ng') == 0 -%}
- (This directive can be used as custom element, but be aware of IE restrictions).
- {%- endif %}
{% code %}
<{$ doc.name | dashCase $}
{%- for param in doc.params %}
diff --git a/docs/content/guide/bootstrap.ngdoc b/docs/content/guide/bootstrap.ngdoc
index bd13ec1b1d8e..573a989818e6 100644
--- a/docs/content/guide/bootstrap.ngdoc
+++ b/docs/content/guide/bootstrap.ngdoc
@@ -40,8 +40,8 @@ initialization.
3. If you choose to use the old style directive syntax `ng:` then include xml-namespace in `html`
- to make IE happy. (This is here for historical reasons, and we no longer recommend use of
- `ng:`.)
+ when running the page in the XHTML mode. (This is here for historical reasons, and we no longer
+ recommend use of `ng:`.)
diff --git a/docs/content/guide/ie.ngdoc b/docs/content/guide/ie.ngdoc
index 8cc554e8ec01..ffd70ba69b4c 100644
--- a/docs/content/guide/ie.ngdoc
+++ b/docs/content/guide/ie.ngdoc
@@ -7,7 +7,7 @@
**Note:** AngularJS 1.3 has dropped support for IE8. Read more about it on
-[our blog](http://blog.angularjs.org/2013/12/angularjs-13-new-release-approaches.html).
+[our blog](https://blog.angularjs.org/2013/12/angularjs-13-new-release-approaches.html).
AngularJS 1.2 will continue to support IE8, but the core team does not plan to spend time
addressing issues specific to IE8 or earlier.
@@ -19,7 +19,7 @@ on IE.
The project currently supports and will attempt to fix bugs for IE9 and above. The continuous
integration server runs all the tests against IE9, IE10, and IE11. See
[Travis CI](https://travis-ci.org/angular/angular.js) and
-[ci.angularjs.org](http://ci.angularjs.org).
+[ci.angularjs.org](https://ci.angularjs.org).
We do not run tests on IE8 and below. A subset of the AngularJS functionality may work on these
browsers, but it is up to you to test and decide whether it works for your particular app.
@@ -27,8 +27,8 @@ browsers, but it is up to you to test and decide whether it works for your parti
To ensure your AngularJS application works on IE please consider:
-1. Use `ng-style` tags instead of `style="{{ someCss }}"`. The latter works in Chrome and Firefox
- but does not work in Internet Explorer <= 11 (the most recent version at time of writing).
+1. Use `ng-style` tags instead of `style="{{ someCss }}"`. The latter works in Chrome, Firefox,
+ Safari and Edge but does not work in Internet Explorer (even 11).
2. For the `type` attribute of buttons, use `ng-attr-type` tags instead of
`type="{{ someExpression }}"`. If using the latter, Internet Explorer overwrites the expression
with `type="submit"` before AngularJS has a chance to interpolate it.
diff --git a/docs/content/misc/faq.ngdoc b/docs/content/misc/faq.ngdoc
index cb3838f6e219..e7029067a90d 100644
--- a/docs/content/misc/faq.ngdoc
+++ b/docs/content/misc/faq.ngdoc
@@ -142,10 +142,8 @@ We run our extensive test suite against the following browsers: the latest versi
Firefox, Safari, and Safari for iOS, as well as Internet Explorer versions 9-11. See
{@link guide/ie Internet Explorer Compatibility} for more details on supporting legacy IE browsers.
-If a browser is untested, it doesn't mean it won't work; for example, older Android (2.3.x)
-is supported in the sense that we avoid the dot notation for reserved words as property names,
-but we don't actively test changes against it. You can also expect browsers to work that share
-a large part of their codebase with a browser we test, such as Opera > version 12
+If a browser is untested, it doesn't mean it won't work. You can also expect browsers to work that
+share a large part of their codebase with a browser we test, such as Opera 15 or newer
(uses the Blink engine), or the various Firefox derivatives.
diff --git a/src/Angular.js b/src/Angular.js
index 7f539e81fb52..42942d432c01 100644
--- a/src/Angular.js
+++ b/src/Angular.js
@@ -1353,7 +1353,7 @@ function fromJson(json) {
var ALL_COLONS = /:/g;
function timezoneToOffset(timezone, fallback) {
- // Support: IE 9-11 only, Edge 13-14+
+ // Support: IE 9-11 only, Edge 13-15+
// IE/Edge do not "understand" colon (`:`) in timezone
timezone = timezone.replace(ALL_COLONS, '');
var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;
@@ -1380,12 +1380,7 @@ function convertTimezoneToLocal(date, timezone, reverse) {
* @returns {string} Returns the string representation of the element.
*/
function startingTag(element) {
- element = jqLite(element).clone();
- try {
- // turns out IE does not let you set .html() on elements which
- // are not allowed to have children. So we just ignore it.
- element.empty();
- } catch (e) { /* empty */ }
+ element = jqLite(element).clone().empty();
var elemHtml = jqLite('
').append(element).html();
try {
return element[0].nodeType === NODE_TYPE_TEXT ? lowercase(elemHtml) :
@@ -1523,6 +1518,7 @@ function allowAutoBootstrap(document) {
var script = document.currentScript;
if (!script) {
+ // Support: IE 9-11 only
// IE does not have `document.currentScript`
return true;
}
diff --git a/src/auto/injector.js b/src/auto/injector.js
index 70e3c6eb4592..f45dc12bf5f0 100644
--- a/src/auto/injector.js
+++ b/src/auto/injector.js
@@ -876,9 +876,7 @@ function createInjector(modulesToLoad, strictDi) {
}
var result = func.$$ngIsClass;
if (!isBoolean(result)) {
- // Support: Edge 12-13 only
- // See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/6156135/
- result = func.$$ngIsClass = /^(?:class\b|constructor\()/.test(stringifyFn(func));
+ result = func.$$ngIsClass = /^class\b/.test(stringifyFn(func));
}
return result;
}
diff --git a/src/ng/directive/ngOptions.js b/src/ng/directive/ngOptions.js
index eecc6ccaa8c6..91cc45bf16aa 100644
--- a/src/ng/directive/ngOptions.js
+++ b/src/ng/directive/ngOptions.js
@@ -407,7 +407,8 @@ var ngOptionsDirective = ['$compile', '$document', '$parse', function($compile,
}
- // we can't just jqLite('