2010-03-31 40 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

相关问题