2012-04-12 2 views
0

Рассмотрим этот код:вызов родительской функции из фрейма создается с JQuery

function callme() { 
    alert('call'); 
} 

$(function(){ 
    var iframe = $('<iframe />').attr('src', 'b.php').appendTo('body'); 
    //call 'callme' function from parent 
}); 

Я не хочу, чтобы редактировать b.php. Можно ли каким-либо образом вызвать функцию родителя «callme», используя только javascript в родительском файле?

ответ

2

Не уверен относительно детали «Я не хочу редактировать b.php». Ваш вопрос задает вопрос о том, как вызвать родительскую функцию из iframe, а b.php - в iframe. Как вы можете заставить его вызвать родителя callme() без изменения b.php?

От b.php вы можете позвонить

parent.callme(); 

Или ваш вопрос, как я могу назвать callme() после b.php завершения загрузки?

+0

Я хотел бы использовать переменную Iframe и вызвать метод, если это возможно. – danidacar

+0

@ danip Еще не понятно, что вы имеете в виду использование переменной iframe? Если вы просто хотите называть 'callme()', вам не нужна переменная 'iframe', просто используйте' callme() 'сразу после создания вашего' iframe' –

+0

. Чтобы уточнить, переменная 'iframe' принадлежит к в том же окне, что и 'callme()'; поэтому вызов 'iframe [0] .ownerDocument.window.callme()' будет делать то, что вы хотите, но нет необходимости в косвенности. –

0

Для вызова родительской функции Javascript из iframe вы можете использовать:

window.parent.callme(); 

Имейте в виду, что это не будет работать, если IFrame находится на другом домене. Если он находится на другом домене, вам необходимо установить обе страницы document.domain к тому же значению, как:

// in both the parent and iframe 
document.domain = 'site.com'; 
Смежные вопросы