Как вызвать функцию JavaScript, указанную в дочернем элементе <frame> - PullRequest
10 голосов
/ 10 мая 2011

Я работаю над новым проектом, основанным на тегах.

Вот общая структура HTML родительской страницы (index.html):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>  
</head>
<frameset rows="75px,*" frameborder="0">
    <frame name="frame1" src="frames/frame1.html">
    <frameset class="child_frameset">
        <frame name="frame3" src="frames/frame3.html">
    </frameset>
</frameset>
</html>

Вот как я указываю функцию javascript для дочернего фрейма (frame3.html):

<!DOCTYPE html>  
<html lang="en">  
<head>
    <script type="text/javascript">
        function helloWorld(){
            alert('hello world!');
        }
    </script>   
</head>
<body>
    <h1>I'm frame 3</h1>
</body>
</html>

Моя задача - вызвать функцию helloWorld () . Как мне это сделать?
Заранее спасибо!

Ответы [ 3 ]

21 голосов
/ 10 мая 2011

Вы можете сделать это так:

document.getElementById('frame3').contentWindow.helloWorld();
1 голос
/ 10 марта 2016

Вы можете вызвать метод из childframe

window.frames[n].frames[m].methodName()

где n, m - целые числа, начиная с 0. Если у вас есть документ только один кадр удаляет часть кадров [м] и выполняет работу.

Еще одна вещь, сделайте пробную ошибку и узнайте точные номера кадров и метод. Надеюсь, это поможет

1 голос
/ 01 октября 2013

Проверьте для contentWindow, contentDocument и получите объект frame и выполните вызов.

var siblingFrame;
if (parent.document.getElementById('siblingFrameId').contentWindow){
  siblingFrame = parent.document.getElementById('siblingFrameId').contentWindow;
} else if (parent.document.getElementById('siblingFrameId').contentDocument){
  siblingFrame = parent.document.getElementById('siblingFrameId').contentDocument;
} else if (parent.document.getElementById('siblingFrameId')) {
  siblingFrame = parent.document.getElementById('siblingFrameId');
}

siblingFrame.helloWorld();
...