2011-08-18 60 views
1

我试图访问一个函数,它将更新位于iframe页面中父级的JQuery UI进度栏。每次有人点击iframe页面中的链接时,我都希望它更新进度栏。我搜索周围的答案,并使用“window.parent.FunctionName()”是给出的解决方案,但由于某种原因,它似乎不工作在我的情况?有任何想法吗?从iframe中访问父级的Javascript函数?

更新:它似乎在safari,firefox,但不是在铬?

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

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); 
+0

是在同一个域作为其父的iframe? –

+0

是的,在同一个域。它似乎没有在Chrome中工作? – lislis

+0

你在控制台中是否有错误? Chrome + FF在这种工作方式上或多或少是相同的 –

回答

0

尝试

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

window.parent.updateBar(); 

}); 
+0

这与OP已经尝试的结果基本相同,写法略有不同。 –

0
  1. 请确保jQuery也嵌入在f rame
  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);});