【问题标题】:JQuery addon SimpleModal keeps reopening dynamically loaded iframeJQuery 插件 SimpleModal 不断重新打开动态加载的 iframe
【发布时间】:2010-06-25 01:06:32
【问题描述】:

我发现了一个类似的问题,但接受的答案不是我想要的: Using an iframe in jquery.simplemodal, the iframe reload when the popup is closed

我想首先将内容动态加载到 iframe 中,然后在加载完成后,使用 SimpleModal 显示它。我的问题是它似乎不断弹出。

我已将以下内容链接到一个按钮单击,它可以正常打开(尽管我不相信 iframe 内容在打开时实际上已完成加载。)但是在漂亮的关闭动画之后,我看到 ajax请求被重复并弹回打开。

$.get('a/zong/299/' + number +"/", function(data) {
  $(document.body).append('<iframe id="zong" src='+data+
    ' width="490" height="350" style="display:none;border:none;"></iframe>');
  $('iframe#zong').load(function() 
  {
    $('#zong').modal({
      overlayCss: {backgroundColor:"#C4EFFF"},
      containerCss:{
        ...
      },
      overlayClose:true,
      onOpen: function(dialog){
        dialog.overlay.fadeIn('slow', function(){
          dialog.data.hide();
          dialog.container.fadeIn('slow', function(){
            dialog.data.slideDown('slow');
          });
        })
      },
      onClose: function(dialog){
        dialog.data.fadeOut('slow', function(){
          dialog.container.hide('slow', function(){
            dialog.overlay.slideUp('slow', function(){
              $.modal.close();
            })
          })
        })
      },
    });
  });
});

如您所见,生活相当复杂;)必须在服务器上生成 iframe 源,然后加载一个 iframe,并在对话失去焦点时破坏它。

PS:如果 stackoverflow 可以对复制粘贴的代码进行自动缩进,那就太好了,这需要很长时间! ;)

我尝试在 onClose 函数中添加$('#zong').attr('src', '');,但仍然没有运气,模态对话从不死族中恢复。 ;)

感谢您的帮助!

【问题讨论】:

    标签: jquery iframe simplemodal


    【解决方案1】:
    $.get('a/zong/299/' + number +"/", function(data) { 
        $('<iframe id="zong" src='+data+ 
        ' width="490" height="350" style="display:none;border:none;"></iframe>').modal({ 
          overlayCss: {backgroundColor:"#C4EFFF"}, 
          containerCss:{ 
            ... 
          }, 
          overlayClose:true, 
          onOpen: function(dialog){ 
            dialog.overlay.fadeIn('slow', function(){ 
              dialog.data.hide(); 
              dialog.container.fadeIn('slow', function(){ 
                dialog.data.slideDown('slow'); 
              }); 
            }) 
          }, 
          onClose: function(dialog){ 
            dialog.data.fadeOut('slow', function(){ 
              dialog.container.hide('slow', function(){ 
                dialog.overlay.slideUp('slow', function(){ 
                  $.modal.close(); 
                }) 
              }) 
            }) 
          }, 
        }); 
    }); 
    

    【讨论】:

    • 谢谢。这可能会停止重新出现的对话,但它不会在 iframe 完成加载后等待动画开始。你能构建一些 .load 事件或 onload 和模态对话的组合吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多