从iframe中访问父Javascript函数?

时间:2011-08-18 15:26:11

标签: javascript jquery jquery-ui iframe

我正在尝试访问一个函数,该函数将在iframe页面中更新父级中的JQuery UI进度条。每当有人点击iframe页面中的链接时,我都希望它更新进度条。我一直在寻找答案,并使用“window.parent.FunctionName()”是给出的解决方案,但由于某种原因它似乎在我的情况下不起作用?有什么想法吗?

更新:它似乎适用于safari,firefox,但不适用于Chrome ???

我想在父页面中访问的功能是:

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);            
    }
}

我从iframe页面调用的JQuery调用是:

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

2 个答案:

答案 0 :(得分:0)

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

 window.parent.updateBar();

}); 

答案 1 :(得分:0)

  1. 确保jQuery也嵌入框架内
  2. 您的方法应该可行,但执行该功能的上下文是父窗口。    如果您希望使用框架作为上下文执行该函数,请提供上下文作为参数:

  3.  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);});