如何在chrome浏览器中调用父窗口函数?
嗨,我惊奇地发现在Chrome浏览器中调用窗口父javascript函数时出现问题。 如果我有一个窗口,其中定义了javascript函数
function dolink() { . . . }
我在该窗口中有一个使用jquery进行此调用的iframe
$(function() { $('a.arglink').click(function() { window.parent.dolink($(this).attr('href')); return false; }); });
对dolink函数的调用不起作用。 使用chrome javascript调试器步进,似乎window.parent.dolink 未定义 。 这是设计还是我犯的错误? 在Firefox和IE中,它工作正常。
终于找到了!
Chrome浏览器似乎不允许引用父窗口访问带有文件: protocol的页面。 事实上,我在上面的代码中测试了我的机器上的文件,所以使用类似file:///C:/mytests/mypage.html
。 如果我将该页面放在Web服务器中,它将按预期工作。
你应该调用这样的代码
if(function != undefined) { $(function() { $('a.arglink').click(function() { window.parent.dolink($(this).attr('href')); return false; }); }); }
那么使用frameElement
和ownerDocument
我只是简单地做了这个,它对我有用
在iframe
function sendToParent() { parent.doSomething(); } sendToParent();
在父母
function doSomething() { alert('did it!') }