如何在 iframe 中获取点击事件触发父框架中的警报

Posted

技术标签:

【中文标题】如何在 iframe 中获取点击事件触发父框架中的警报【英文标题】:How to get a click event in an iframe trigger an alert in parent frame 【发布时间】:2012-03-05 19:57:55 【问题描述】:

我的页面上有几个嵌入的iframes,我正在寻找iframe 内的点击事件以触发父框架上的警报。 (iframe 和父框架都是同一个域)。

iFrame html 元素(iframe 有一个类class="iframe1":

<a class="button" href="#">Trigger Parent Frame Alert</a>

iFrame jQuery:

$(document).ready(function()   
  $('.button').click(function() 
    window.parent.triggerAlert();
  );
);

父框架 jQuery:

$(document).ready(function() 
function triggerAlert()
    alert('iFrame button has been clicked');
  
);

我认为我的父框架函数不完整 - 并且不完全确定 iframe 可以与父 DOM 通信?

我之前尝试过这种替代方法,但在父框架中没有运气:

$('.iframe1').contents().find('.button').click(function () 
  alert("iFrame button has been clicked");
);

【问题讨论】:

【参考方案1】:

为了使您的函数对 iframe 可见,您需要将其声明为窗口对象的成员:

$(document).ready(function() 
    window.triggerAlert = function ()
        alert('iFrame button has been clicked');
    
);

【讨论】:

【参考方案2】:

您触发的警报功能处于关闭状态。 试试这个:

$(document).ready(function() 
 window.triggerAlert = function triggerAlert()
    alert('iFrame button has been clicked');
  ;
);

【讨论】:

以上是关于如何在 iframe 中获取点击事件触发父框架中的警报的主要内容,如果未能解决你的问题,请参考以下文章

jquery怎么在父元素事件中禁止子元素的事件?

求助:js,如何关闭IFRAME的父窗口

触发从 iframe 到父文档的自定义事件

如何停止在注入时触发加载事件的空 iframe?

如何通过JQuery实现子窗口操作父窗口

附实例!实现iframe父窗体与子窗体的通信