2013-02-16 2 views
1

Скажем, у меня есть эта страница «index.php» и в нем у меня есть эта связь, которая вызывает всплывающее окно:Вызвать функцию родительского jquery изнутри iframe?

<a href="#" id="signinlink">Sign in</a> 

функция JQuery является:

<script type="text/javascript" charset="utf-8"> 
    jQuery(function() { 
     function launch() { 
      jQuery('#sign_up').lightbox_me({centered: true, onLoad: function() { jQuery('#sign_up').find('input:first').focus()}}); 
     } 
     jQuery('#signinlink').click(function(e) { 
      jQuery("#sign_up").lightbox_me({centered: true, onLoad: function() { 
       jQuery("#sign_up").find("input:first").focus(); 
      } 
     }); 
    }); 
</script> 

Как из IFRAME вызвать эту функцию?

(* Функция Iframe вызывается из родительской страницы "index.php") Я думаю, что я должен добавить ссылку с

window.parent.callme(); 

Но как? пожалуйста помоги!

+0

ли IFrame в том же домене? – Mooseman

+0

Да, это тот же домен – user1978483

+1

parent.document.getElementById ("signinlink"). Click() – mplungjan

ответ

1

Прежде всего - если iframe имеет какое-то отношение к форме входа в систему - он должен сам отправить свой контент. Код должен быть там, а не вызываться в родительском фрейме.

В любом случае, на ваш вопрос не хватает информации о том, что именно вы хотите сделать.

Чтобы получить доступ к вещам из родителей вы:

window.parent.functionname() вместо того, чтобы просто functionname()

Так

$(document).find(...) станет window.parent.$(window.parent.document).find(...)

Чтобы получить доступ к IFRAME от родителя, вам нужно получить contentDocument узла DOM iframe.

Это также полезно: How to expose IFrame's DOM using jQuery?

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

0

Это работает для меня - но только если я устанавливаю JQuery 1.8 ИЛИ добавить jQuery migrate с лайтбокса-мне нужны устаревшие 1.8 и удален в коде обнаружения 1,9 браузера

DEMO

в IFRAME (при условии, нет JQuery в плавающем фрейме):

<a id="parentsignin" href="#">Signup</a> 

использованием

window.onload=function() { 
    document.getElementById("parentsignin").onclick=function() { 
    parent.document.getElementById('signinlink').click(); 
    return false; 
    } 
} 

На самом деле, вы можете сделать это в родителей - заметьте, я отменить саму ссылку с preventDefault и повторно использовать код:

function launch() { 
    $('#sign_up').lightbox_me({ 
    centered: true, 
    onLoad: function() { 
     $('#sign_up').find('input:first').focus(); 
    } 
    }); 
} 


$(function() { 
    $('#signinlink').click(function(e) { 
    e.preventDefault(); // stop the link from being followed 
    launch(); 
    }); 
}); 
Смежные вопросы