2010-03-31 61 views
6

嗨, 我驚訝地發現,在Chrome瀏覽器中,調用窗口父javascript函數時出現問題。 如果我有它如何在Chrome瀏覽器中調用父窗口函數?

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

定義一個JavaScript函數的窗口,我有一個IFRAME該窗口,使這個呼叫使用jQuery

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

內調用dolink功能不起作用。使用chrome javascript調試器,看起來window.parent.dolink是undefined。這是我設計的還是一個錯誤? 在Firefox和IE中它工作正常。

+0

是在同一個域父文檔的iframe? – 2010-03-31 06:18:27

+0

是的,在同一個域上 – 2010-03-31 09:02:24

回答

10

終於找到了!

看來,Chrome瀏覽器不允許引用訪問頁面的父窗口文件:協議。事實上,我在上面的代碼中測試了我機器上的文件,因此使用了像file:///C:/mytests/mypage.html這樣的網址。如果我把這個頁面放在Web服務器上,它就會按預期工作。

+2

我有同樣的問題與鉻,但沒有使用文件協議,它是純http http:// – lisak 2011-02-19 18:05:27

+1

只是測試它,這是行不通的: C //我想要我的upvote回 – almosnow 2012-09-05 06:23:25

2

怎麼樣使用frameElementownerDocument

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

不能在任何瀏覽器上工作 – 2010-03-31 08:11:39

+0

對,忘了東西 – Alsciende 2010-03-31 08:13:43

4

你應該調用代碼一樣,

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

這並不需要在一個匿名函數內...... – 2012-09-04 22:41:20

相關問題