2010-03-31 30 views
6

HI, Şaşırtıcı bir şekilde, Chrome tarayıcıda, arama penceresi üst javascript işlevlerinde sorunlar buldum. BenKrom tarayıcıda ana pencere işlevi nasıl aranır?

<script type="text/javascript"> 
    function dolink() { 
    . . . 
    } 
</script> 

tanımlanan bir javascript fonksiyonu ile bir pencere var ve bu çağrıyı kullanarak jquery

<script type="text/javascript"> 
$(function() { 
     $('a.arglink').click(function() { 
     window.parent.dolink($(this).attr('href')); 
     return false; 
     }); 
}); 
</script> 

yapar pencere içinde bir iframe varsa Dolink işlev çağrısı çalışmıyor Chrome javascript hata ayıklayıcısına basılarak, window.parent.dolink'in undefined olduğu görülür. Yaptığım tasarım ya da hata mı? Firefox ve IE'de iyi çalışıyor. frameElement ve

<script type="text/javascript"> 
$(function() { 
     $('a.arglink').click(function() { 
     window.frameElement.ownerDocument.parentWindow.dolink($(this).attr('href')); 
     return false; 
     }); 
}); 
</script> 
+0

gibi kod çağırmalıdır mı? –

+0

evet, aynı alan adında –

cevap

10

ownerDocument kullanma hakkında

+2

Ben chrome ile aynı sorunu var, ama hiçbir dosya protokolü kullanılır, sadece saf olduğunu test – lisak

+1

, bu işe yaramaz: C // Desteklerim geri – almosnow

2

Ne Nihayet buldum!

Chrome tarayıcısının, dosya: protokolü ile erişen bir üst pencereye başvurma izni olmadığı anlaşılıyor. Aslında, yukarıdaki kodumu makinemdeki dosyalarla test ettim, böylece bir URL file:///C:/mytests/mypage.html gibi. Bu sayfayı bir Web Sunucusuna koyarsam, her şey beklendiği gibi çalışır. ebeveyn belgesi olarak aynı etki alanında iframe

+0

hiçbir tarayıcıda çalışmıyor –

+0

doğru, bir şey unuttum – Alsciende

4

o

if(function != undefined) 
{ 
$(function() { 
     $('a.arglink').click(function() { 
     window.parent.dolink($(this).attr('href')); 
     return false; 
     }); 
}); 
} 
+0

Bu gerçekten anonim bir işlevin olması gerekmiyor ... –

İlgili konular