问题
HI, I've surprisingly found problems, in Chrome browser, in calling window parent javascript functions. If I have a window with a javascript function defined in it
<script type="text/javascript">
function dolink() {
. . .
}
</script>
and I have an iframe inside that window that makes this call using jquery
<script type="text/javascript">
$(function() {
$('a.arglink').click(function() {
window.parent.dolink($(this).attr('href'));
return false;
});
});
</script>
the call to dolink function doesn't work. Stepping with chrome javascript debugger, it appears that window.parent.dolink is undefined. It's by design or a mistake that I made? In Firefox and IE it works fine.
回答1:
Finally found it!
It seems that Chrome browser doesn't permit to reference a parent window accessing pages with the file: protocol. In fact I tested above code with files on my machine, so with a url like file:///C:/mytests/mypage.html . If I put that page in a Web Server, it all works as expected.
回答2:
you should call code like that
if(function != undefined)
{
$(function() {
$('a.arglink').click(function() {
window.parent.dolink($(this).attr('href'));
return false;
});
});
}
回答3:
What about using frameElement and ownerDocument
<script type="text/javascript">
$(function() {
$('a.arglink').click(function() {
window.frameElement.ownerDocument.parentWindow.dolink($(this).attr('href'));
return false;
});
});
</script>
回答4:
I just simply did this and it works for me
in iframe
function sendToParent() {
parent.doSomething();
}
sendToParent();
in parent
function doSomething() {
alert('did it!')
}
来源:https://stackoverflow.com/questions/2550858/how-to-call-parent-window-function-in-chrome-browser