2011-08-18 62 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);});