javascript общение между - Как получить доступ к родительскому iframe из JavaScript




5 Answers

Также вы можете установить имя и идентификатор равными значениям

<iframe id="frame1" name="frame1" src="any.html"></iframe>

поэтому вы сможете использовать следующий код внутри дочерней страницы

parent.document.getElementById(window.name);
js get

Ну, у меня есть IFrame, который вызывает одну и ту же страницу домена. Моя проблема в том, что я хочу получить доступ к некоторой информации из этого родительского iframe с этой вызываемой страницы (из JavaScript). Как я могу получить доступ к этому iframe?

Подробности: Есть несколько IFRAME, как этот, который может загружать одну и ту же страницу, потому что я программирую среду Windows. Я намерен закрыть этот Iframe, поэтому мне нужно знать, что я должен закрыть изнутри. У меня есть массив, содержащий ссылки на эти фреймы.

EDIT: там iframe генерируются динамически




Я бы рекомендовал использовать API PostMessage .

В вашем iframe вызовите:

window.parent.postMessage({message: 'Hello world'}, 'http://localhost/');

На странице, в которую вы включаете iframe, вы можете слушать такие события:

window.addEventListener('message', function(event) {
      if(event.origin === 'http://localhost/')
      {
        alert('Received message: ' + event.data.message);
      }
      else
      {
        alert('Origin not allowed!');
      }

    }, false);

Кстати, можно также делать вызовы в другие окна, а не только iframes.

Узнайте больше о API PostMessage на блоге John Resigs here




вы можете использовать parent для доступа к родительской странице. Поэтому для доступа к функции это будет:

var obj = parent.getElementById('foo');



Возможно, просто используйте

window.parent

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

window.top



// just in case some one is searching for a solution
function get_parent_frame_dom_element(win)
{
    win = (win || window);
    var parentJQuery = window.parent.jQuery;
    var ifrms = parentJQuery("iframe.upload_iframe");
    for (var i = 0; i < ifrms.length; i++)
    {
        if (ifrms[i].contentDocument === win.document)
            return ifrms[i];
    }
    return null;
}



Related