2013-07-09 1 views
2

Я унаследовал код javascript, который напрямую обращается к iframe по его названию, без каких-либо getElementById() или чего-то еще. Я не могу найти никаких признаков того, что это действительно законно, но, похоже, он работает в браузерах, в которых я это пробовал (Chrome, Firefox, IE10, Safari для Windows).Непосредственный доступ к iframe по имени - это законно?

Простой тест:

<iframe name="iFrameName" id="iFrameId" src="test2.html"></iframe> 
<button onclick="iFrameName.myFunction();">click me</button> 

И test2.html ГКЗ фрейма содержит:

<script type="text/javascript"> 
    function myFunction() 
    { 
     alert("OH HAI!"); 
    } 
</script> 

Нажатие кнопки отлично работает - предупреждение "OH HAI" выскакивает.

Как это работает? Должно ли это работать? Безопасно ли полагаться или я должен использовать getElementById() для извлечения iframe?

ответ

1

Как это работает? Должно ли это работать?

Да, было время, когда к элементам можно было получить доступ только по имени, и большинство (все?) Браузеров все еще поддерживают его. См. QuirksMode page about it, он был написан много лет назад, но по-прежнему применяется.

Безопасно ли использовать или использовать getElementById() для извлечения iframe?

Вы должны использовать document.getElementById() и другими современными методами. Если вы будете полагаться на имена, ваш код скоро станет беспорядком.

Смежные вопросы