Вы не можете получить доступ к переменным в этой функции готовности iframe по той же причине, по которой вы не можете получить доступ к локальным переменным любой другой функции (вы не можете «опуститься» в области видимости).Однако, если вы можете изменить код в iframe, вы всегда можете увеличить его.Итак, в вашем коде iframe:
$(document).ready(function() {
function func1() {
alert("Function in iframe");
}
parent.iframeFunctions = {
test: func1
}
});
Следующая проблема заключается в том, что вам нужно иметь доступ к функции.Вы не можете использовать обычный готовый документ jquery, потому что iframe не завершает загрузку, когда DOM родительской страницы готов, и, следовательно, ваш объект iframeFunctions все еще не определен на родительской странице.Вам нужно это:
$(window).load(function() {
iframeFunctions.test();
});
Однако вы можете получить доступ к глобальному пространству iframe.О да, пока все это предполагает, что источник iframe находится в рамках одной политики домена.Если нет, то нужно проделать гораздо больше работы, а во многих случаях это даже не стоит.Например, объект jquery находится в глобальном пространстве, так что вот как вы получаете в jquery iframe:
$("iframe")[0].contentWindow.$("#divInIframe")
Итак, если вы изменили содержимое источника iframe, чтобы использовать выражения функций вместо функцийdeclartions:
var func1 = function() {
alert("Function in iframe");
}
$(document).ready(function() {
func1();
});
Вы также сможете получить к нему доступ от родителя (после того, как событие загрузки окна сработало):
$(window).load(function() {
$("iframe")[0].contentWindow.func1();
});