Идентификаторы элементов формы как глобальные переменные в IE11 - PullRequest
0 голосов
/ 26 августа 2018

Знаете ли вы, почему именованный доступ [1] не работает в IE11 для элементов формы (input) внутри form?

<div>
	<input id="inDiv" />
	<script>
		document.write(typeof inDiv);
	</script>
</div>
<form>
	<input id="inForm" />
	<script>
		document.write(typeof inForm);
	</script>
</form>

Над фрагментом пишет object object в «любом браузере, кроме IE11».

В IE11 пишет object undefined.


Что еще более странно: в IE11 встроенный обработчик событий для элемента в форме видит «глобальный идентификатор» элемента в той же форме, просто ОК:

h5,h6 { margin: 0;}

	
	What is typeof i1 in:
	- inline script inside DIV:
	
		document.write(typeof i1); // `object` in IE11
	
	- inline event handler inside DIV:
	
image
- inline script outside DIV:
document.write(typeof i1); // `object` in IE11
- inline event handler outside DIV:
image
What is typeof i2 in:
- inline script inside FORM:
document.write(typeof i2); // `undefined` in IE11
- inline event handler inside FORM:
image
- inline script outside FORM:
document.write(typeof i2); // `undefined` in IE11
- inline event handler outside form:
image
Result in IE 11
What is typeof i1 in:

- inline script inside DIV:
object 
- inline event handler inside DIV:
object 
- inline script outside DIV:
object 
- inline event handler outside DIV:
object 

 
What is typeof i2 in:

- inline script inside FORM:
undefined 
- inline event handler inside FORM:
object 
- inline script outside FORM:
undefined 
- inline event handler outside form:
undefined

[1] http://w3c.github.io/html/browsers.html#named-access-on-the-window-object

Смежные вопросы: Становятся ли элементы дерева DOM с идентификаторами глобальными переменными? , Почему бы нам просто не использовать идентификаторы элементов в качестве идентификаторов в JavaScript? .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...