вызвать функцию в другом iframe на другом слое - PullRequest
0 голосов
/ 16 марта 2012

Я пытаюсь вызвать функцию из другого кадра.Но когда я использую «document.getElementById (frame_id))», он не обнаруживается.

Я проверил, каким был вывод innerHTML документа, и целевой фрейм, который мне нужен, находится на 1 слой внутри другого фрейма.

В основном iframe я использую: document.getElementById ('player')), но он возвращает: null

Мне нужно перейти к iframe "player" в iframe "menu"..

вот код в "основной" главе iframes:

function callPlayer(frame_id, func, args){
    if(!frame_id) return;
    if(frame_id.id) frame_id = frame_id.id;
    else if(typeof jQuery != "undefined" && frame_id instanceof jQuery && frame_id.length) frame_id = frame_id.get(0).id;
    if(!document.getElementById(frame_id)) return;
    args = args || [];

    /*Searches the document for the IFRAME with id=frame_id*/
    var all_iframes = document.getElementsByTagName("iframe");
    for(var i=0, len=all_iframes.length; i<len; i++){
        if(all_iframes[i].id == frame_id || all_iframes[i].parentNode.id == frame_id){
           /*The index of the IFRAME element equals the index of the iframe in
             the frames object (<frame> . */
           window.frames[i].postMessage(JSON.stringify({
                "event": "command",
                "func": func,
                "args": args,
                "id": frame_id
            }), "*");
        }
    }
}

function switchState()
{
    callPlayer('player', 'stopVideo');
}

Надеюсь, кто-то понимает мое описание ..

the HTML in Firebug

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Вы можете использовать

window.parent.document.getElementById("player").contentWindow

из «основного» iframe для нацеливания на оконный объект iframe «player» и вызова там его функций.

Например:

window.parent.document.getElementById("player").contentWindow.player_func();
0 голосов
/ 16 марта 2012

Вы можете использовать объект parent для адресации контейнера, в котором находится ваш main iframe.

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