Вызов функции в iframe из родительского окна - PullRequest
0 голосов
/ 02 июля 2011

Я не могу понять, что я делаю здесь неправильно.

Я создаю веб-сайт без серверной стороны У меня есть главная страница с iframe, и по нажатию кнопки я хочу, чтобы src iframe изменился и в нем была вызвана функция с переданным параметром.

Функция по какой-то причине не вызывается.

вот мой код:

фрейм:

<iframe id="main_area_frame" name="main_area_frame" src="" frameborder="0" width="100%"     height="100%"></iframe>

функция onclick:

function onSubMenuClick(images)
{
    //Set Images Frame
    main_area = document.getElementById("main_area_frame");
    main_area.src = "ImagesFrame.html";
    main_area.contentWindow.initializeImages(images);
}

функция в iframe (ImagesFrame.html):

function initializeImages(imagesStr) 
{
    alert("initializeImages");
    ...
}

некоторые странные вещи, которые я заметил, это то, что

при добавлении оповещения непосредственно перед main_area.contentWindow.initializeImages (images); функция как-то успешно вызывается.

если я с самого начала установил src для iframe и пропустил строку main_area.src = "ImagesFrame.html"; - функция снова вызывается.

есть идеи?

Ответы [ 2 ]

0 голосов
/ 26 июля 2012

Я успешно опубликовал функцию из дочернего iframe во время обработки загрузки.Например, (подставляя funcName ):

В дочернем iframe, отредактируйте тег body (или используйте эквивалентный JavaScript)

  <body onload='top.funcName = funcName'>

На родительской страницередактировать JavaScript;теперь funcName будет общедоступно как
value = top.funcName( )

0 голосов
/ 02 июля 2011

Не уверен, что это является причиной, но я попытался бы установить задержку (сон) между

main_area.src = "ImagesFrame.html";

и

main_area.contentWindow.initializeImages(images);

, чтобы позволить визуализации iframe(Я не знаю, отображается ли он тем же фреймом или браузер запускает новый).

Только мои два цента.

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