HI, 我惊奇地发现在Chrome浏览器中调用窗口父javascript函数存在问题。 如果我有一个定义了javascript函数的窗口
<script type="text/javascript">
function dolink() {
. . .
}
</script>
我在该窗口中有一个 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 :(得分:9)
终于找到了它!
Chrome浏览器似乎不允许引用使用 file:协议访问网页的父窗口。事实上,我在上面的代码中使用我的机器上的文件进行了测试,因此使用了file:///C:/mytests/mypage.html
这样的网址。如果我将该页面放在Web服务器中,它将按预期工作。
答案 1 :(得分:4)
你应该像这样调用代码
if(function != undefined)
{
$(function() {
$('a.arglink').click(function() {
window.parent.dolink($(this).attr('href'));
return false;
});
});
}
答案 2 :(得分:2)
使用frameElement
和ownerDocument
<script type="text/javascript">
$(function() {
$('a.arglink').click(function() {
window.frameElement.ownerDocument.parentWindow.dolink($(this).attr('href'));
return false;
});
});
</script>
答案 3 :(得分:0)
我只是做了这个,它对我有用
iframe中的
function sendToParent() {
parent.doSomething();
}
sendToParent();
在父母中
function doSomething() {
alert('did it!')
}