Доступ к родительской функции Javascript изнутри iframe? - PullRequest
1 голос
/ 18 августа 2011

Я пытаюсь получить доступ к функции, которая обновляет индикатор выполнения пользовательского интерфейса JQuery, расположенный в родительском элементе, на странице iframe.Каждый раз, когда кто-то нажимает на ссылку на странице iframe, я хочу, чтобы она обновляла индикатор выполнения.Я искал ответы, и использование "window.parent.FunctionName ()" - это решение, которое дается, но по какой-то причине оно не работает в моей ситуации?Любые идеи?

ОБНОВЛЕНИЕ: Кажется, работает в Safari, Firefox, но не в Chrome ???

Функция, которую я хочу получить на родительской страницеis:

var percentage = 0;                                                                 

$('ul li a').one('click', updateBar);                                               

function updateBar() {
    percentage += 8;                                                                
    $('.ui-progressbar-value').stop().animate({ width: percentage+"%" }, 500)       
    $('.middle').progressbar('option','value', percentage);                         

    if(percentage > 100) {                                                  
        $('ui-progressbar-value').stop().animate({ width: "100%"}, 500);            
    }
}

Вызов JQuery, который я звоню со страницы iframe:

$('#sidenav ul li a').one('click', window.parent.updateBar); 

Ответы [ 2 ]

0 голосов
/ 18 августа 2011
  1. убедитесь, что jQuery также встроен во фрейм
  2. Ваш подход, как он есть, должен работать, но контекст, в котором выполняется функция, является родительским окном.Если вы хотите выполнить функцию, используя фрейм в качестве контекста, укажите контекст в качестве аргумента:

 function updateBar(context) {
    percentage += 8;                                                                
    $('.ui-progressbar-value',context).stop().animate({ width: percentage+"%" }, 500)       
    $('.middle',context).progressbar('option','value', percentage);                         

    if(percentage > 100) {                                                  
        $('ui-progressbar-value',context).stop().animate({ width: "100%"}, 500);            
    }
}

$('#sidenav ul li a').one('click', function(){window.parent.updateBar(document);}); 
0 голосов
/ 18 августа 2011

попробуй

$('#sidenav ul li a').one('click',function(){

 window.parent.updateBar();

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