Доступ к функции javascript во вложенном iframe в IE

В настоящее время у меня есть структура страницы, состоящая из страницы (Parent), которая включает iframe (iframe0) и внутри этого iframe у меня есть другой iframe (iframe1). В iframe1 у меня есть функция javascript, которую я пытаюсь вызвать из Parent. В Firefox/Chrome/Safari я могу вызвать эту функцию со следующим кодом:

 frames["iframe0"]["iframe1"].functionName();

Однако в Internet Explorer приведенный выше код не работает, и он возвращает ошибку "Объект не поддерживает это свойство или метод". Я пробовал другие способы доступа к методу, при этом все они возвращали ту же ошибку.

 window.frames.iframe0[iframe1].functionName();
 window.iframe0.iframe1.functionName();
 window.frames.iframe0.frames.iframe1.functionName();

Я даже попытался вызвать функцию в iframe0, которая вызвала функцию в iframe1, и это даже не работало.

Кто-нибудь имеет представление о том, как получить доступ к функции javascript, которая вложен в iframe, которая имеет 2 уровня глубины?

Спасибо.

Update: Изучив проблему, я обнаружил, что проблема, с которой я имею дело, не связана с тем, что я задал. Ответ ylebre дал ниже ответы на вопрос, который я задал, и там для меня будет отмечен как ответ. Я, вероятно, начну еще один вопрос, описывающий мою проблему более подробно.

Ответ 1

Я привел пример, используя 3 файла HTML. Внешней является test.html, которая имеет iframe, содержащий iframe1.html. В свою очередь iframe1.html содержит iframe, содержащий iframe2.html. Я надеюсь, что это такая настройка, которую вы имеете в виду.

В основном вы можете вызвать функцию iframe, используя iframe.contentWindow.myfunc();

Используя contentWindow.document, вы можете получить доступ к iframe второго уровня.

Пример функции doit() вызывает функцию в родительском, первом iframe и втором iframe.

Надеюсь, это поможет!

<!------- test.html -------->
<html>
<head>
    <script type="text/javascript">
        function parent_function() {
            alert('parent');
        }
        function doit() {
            parent_function();
            document.getElementsByTagName('iframe')[0].contentWindow.iframe1_function();
            document.getElementsByTagName('iframe')[0].contentWindow.document.getElementsByTagName('iframe')[0].contentWindow.iframe2_function();
        }
    </script>
</head>
<body>
main
<a href="javascript:doit();">do it</a>
<iframe src='iframe1.html'>
</body>
</html>

<!------- iframe1.html -------->
<html>
<head>
    <script type="text/javascript">
        function iframe1_function() {
            alert('iframe1');
        }
    </script>
</head>
<body>
frame1
<iframe src='iframe2.html'>
</body>
</html>

<!------- iframe2.html -------->
<html>
<head>
    <script type="text/javascript">
        function iframe2_function() {
            alert('iframe2');
        }
    </script>
</head>
<body>
frame2
</body>
</html>

Ответ 2

Быстрый способ выбора iframe - выбрать его в dom explorer, затем в консоли js вы можете запустить $0.contentWindow.myFunction()