【问题标题】:Creating of a dynamic iframe with a jquery click event使用 jquery click 事件创建动态 iframe
【发布时间】:2012-05-23 13:30:50
【问题描述】:

当我像这样动态创建 iframe 时

$( '<iframe/>' )
    .attr('id', 'aaoifr0')
    .attr('src', aPageName)
    .appendTo(_public.content);

并向 iframe 中的body 元素添加点击事件

$('#aaoifr0')
    .contents().find('body').click(function(){ alert(0) });

它不起作用。

但是,如果我在显示 iframe 后通过 firebug 手动添加事件,如下所示:

$('#aaoifr0').contents().find('body').click(function(){ alert(0) });

效果很好!

我尝试了多种方法来检查 iframe 内容的负载同步/异步,但找不到有用的答案。任何想法如何使这项工作?

【问题讨论】:

  • 多调试了几次后感觉问题出在点击事件的分配上...好像停留在父页面而不是iframe的html... ?这可能是一个 jquery '混淆'的东西???

标签: jquery events iframe dynamic click


【解决方案1】:

好的,解决了..

解决方法是使用JQuery创建的frame对象的.load()方法。

注意:不要使用.ready(),它会引用父文档。您可以通过以下方式对其进行测试:

$('<iframe/>')
  .attr('id', 'someId')
  .attr('src', 'aPageSrc')
  .appendTo(_public.content)
  .load(function() {
    $(this).contents().find('body').click(function() {
      alert('Loaded!');
    });
  })
  .ready(function() {
    $(this).contents().find('body').click(function() {
      alert('Ready!');
    });
  });

这很难想象,我希望接下来的事情会容易很多。

【讨论】:

    【解决方案2】:

    你可以试试

    $('<iframe id="aaoifr0" src="' + aPageName  + '"></iframe>')
    

    此外,当您附加 jquery 对象时,您需要附加到另一个 jquery 对象,而不是对象的内容,_public.content 可能是一个问题,这取决于它是什么对象。尝试更安全

    $('<iframe id="aaoifr0" src="' + aPageName  + '"></iframe>').appendto( $('document.body') );
    

    我认为使用 iframe 我有一个问题添加

    <iframe />
    

    你需要

    <iframe></iframe>
    

    如果 iframe src 来自同一个域,jquery 也只能访问 iframe 内容。但既然萤火虫可以工作,这应该不是问题

    不确定是否有帮助,如果有其他问题,请告诉我。

    【讨论】:

    • 问题出在点击事件的添加上...其余的都运行良好...而且“_public.content”是一个jquery对象,更具体地说是一个div...像这样: _public.content=$("#divContent")
    • iframe src 是否与运行脚本的页面在同一个域中?
    • 是的,在一个子文件夹中......我再次强调,在浏览器中加载页面后,将相同的代码应用于通过 Firebug 保存内容的 div,它位于 jquery 对象中,工作正常... $('#aaoifr0').contents().find('body').click( function(){ alert(0) } );这让我认为我错过了页面和 iframe 之间的事件管道中正在发生的事情......?任何人都有一个想法......
    猜你喜欢
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 2023-03-08
    • 2013-03-16
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多