Ответ 1
Вы можете сделать это следующим образом:
document.getElementById('frame3').contentWindow.helloWorld();
Я работаю над проектом, который основан на и тегах.
Здесь общая структура 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(). Как это сделать?
Спасибо заранее!
Вы можете сделать это следующим образом:
document.getElementById('frame3').contentWindow.helloWorld();
Проверьте содержимое contentWindow, contentDocument и получите объект фрейма и выполните вызов.
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();
Вы можете вызвать метод из childframe
window.frames[n].frames[m].methodName()
где n, m - целые числа, начиная с 0. Если у вас есть документ только один кадр удаляет часть кадров [m] и выполняет задание.
Еще одна вещь, пробная ошибка и поиск точных номеров кадров и метод. Надеюсь, что это поможет