【问题标题】:Have a frame trigger a function in its parent让一个框架在其父级中触发一个函数
【发布时间】:2015-07-30 22:45:11
【问题描述】:

我有一个通过在父页面中运行 window.open('/a-new-page/', 'my-second-frame'); 创建的 HTML 框架。

当在框架中单击一个按钮时,我想在父页面上触发一个功能。 (在我的特殊情况下,该函数会更新一些父框架 HTML)

最简单的方法是什么?

父级和框架都具有相同的域。

【问题讨论】:

    标签: javascript html html-frames


    【解决方案1】:

    通过在 iframe 中使用 window.parent 关键字,如果 iframe 和父窗口位于同一域中,您可以访问父窗口中的元素。

    尝试window.parent.yourParentWindowFunctionName() 之类的方法在父窗口中调用函数。

    【讨论】:

    • 有趣的是,当我尝试在我的框架中运行 parent.helloWorld() 时,它会在我的框架控制台中打印出我的 hello world 消息......而不是父母。将再次测试。
    • 这个,或者,如果他使用匿名函数,为了访问子上下文,你可以使用document.getElementById('my-second-frame').contentWindow.document
    • 是的,我刚刚测试了它,调用parent.myFunction() 会在调用它的框架中执行父函数。我用console.log() 对其进行了测试 - 消息出现在我框架的控制台中。然后我用 $('div').html('HI!'); 的函数对其进行了测试,它也替换了我框架中 div 的内容,而不是父级。
    • 是的,如果调用 parent.helloWorld() 没有返回 undefined,那么它会在您的父窗口中调用函数 helloWorld()。当您说它打印在框架的控制台中时,您的意思是您的浏览器控制台吗?如果是这样,那么控制台窗口会选择任何 console.log,无论它来自父级或 iframe。
    • 试试 parent.$('div').html('HI!');而是更改父级中的内容。与 console.log 一样,请参阅我之前的评论。
    猜你喜欢
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多