首页 > 解决方案 > 如何在尚不存在的 iframe 上绑定点击事件?

问题描述

我想在页面上动态创建的一些 iframe 上绑定一个事件。

有一种方法可以在页面上尚不存在的常规元素上绑定事件,使用 jQuery 的 .on() 方法,并将选择器作为第二个参数传递。像这样 :

$(document).on('click', 'div', () => { 
  // some code 
});

但我猜 iframe 的行为不同。这不起作用:

$(document).on('click', 'iframe', () => { 
  // some code 
});

我也想到了这些:

$(window).on('click', 'document', () => {});
// or
$(document).on('click', 'body', () => {});

他们都没有工作。

我还想到了另一种方法:

$(document).on('load', 'iframe', e => {
  $(e.target).contents().find('body').on('click', () => {
    // some code
  });
});

甚至没有绑定 iframe 的加载事件。

我可能能够用完全不同的方法来处理它。我可以在代码中的其他位置绑定 click 事件,每次创建 iframe 时,它​​们实际上“存在”在页面中,然后我可以将我想要的任何事件绑定到它们。但我想把它作为最后的解决方案。如果有办法在页面加载时为将在页面中动态创建的任何 iframe 绑定这些事件,请提出解决方案。

更新:我在同一个域上,所以跨域限制不适用。

标签: javascriptjqueryeventsiframebinding

解决方案


推荐阅读