jQuery 可拖动 IFrameFix

Posted

技术标签:

【中文标题】jQuery 可拖动 IFrameFix【英文标题】:jQuery Draggable IFrameFix 【发布时间】:2011-08-03 16:31:52 【问题描述】:

我对 jQuery Draggable IFrameFix 有一点问题。 我有一个容器(如下所示),里面有一个 iframe。我在可拖动设置中打开了 iframeFix,但它并没有改变任何事情。有遇到同样问题的人或可能知道如何解决此问题的人吗?

<div class="container">
<div class="toolbar">
    <div class="opt1"></div>
    <div class="opt2"></div>
</div>
<iframe src="url" class="frame" frameborder="0" scrolling="no"><p>No support for iframes</p></iframe>
</div>

如果是我的 javascript 代码。

$(".container").draggable(
        snap: ".snapper_col",
        containment: "#element_container",
        handle: '.opt1',
        snapTolerance: 20,
        iframeFix: true,
        cursor: "crosshair",
        start: function(ev,ui)
        ,
        drag: function(ev,ui)

        ,
        stop: function(ev, ui)

        
);

谢谢!

【问题讨论】:

【参考方案1】:

解决了。

我在 iframe 上创建了自己的叠加层,当我开始拖动时,我显示它并在我停止时隐藏它。这样 iframe 就不会拖累。

【讨论】:

非常感谢您分享这个技巧。我正在使用带有 IFRAME 的 jQuery UI 对话框,它导致了无穷无尽的问题。 现在也这样做。它也被报告为这里的错误:bugs.jqueryui.com/ticket/7650 非常感谢,先生,拯救我的一天! @sirwilliam,我把 Jeroenjoosen 的答案写出来了。感谢您的解决方案,它有效。 ***.com/a/24597136/1342440【参考方案2】:

是的,你可以在 iframe 上放置一个 div,我使用这个功能:

div.draggable 
    cancel: '.noDraggable',
    scroll: false,
            appendTo: 'body',
            zIndex: 9999,
            cursor: "move",
            distance: 10,
            iframeFix: true,

            start: function()
            var iframe = $(this).find("iframe");
                if(iframe.length > 0)
                div(iframe.parent(), "img/blank.gif", "transparent");  
                
            ,


            stop: function()
                $(this).find(".capaCargando").remove();
            

);

这就是函数

function capaCargando(div, img, color)
                                if(div.length > 0)
                                    //div.find('.capaCargando').remove();
                                    //aLaConsola(div.find('.capaCargando').length);
                                    if(img == undefined)
                                        img = 'img/uispoty/loadBusqueda.gif';
                                    

                                    if(color == undefined)
                                        color = '#666';
                                    

                                    var w = div.width(),
                                    h = div.height(),
                                    html = "<div class='capaCargando'>"+
                                    "<div class='bgCapaCargando' style='background-color:"+color+"'></div>"+
                                    "<div class='iconoCapaCargando' style='background-image:url("+img+")'></div>"+
                                    "</div>";
                                    div.prepend(html);
                                    var capa = div.find(".capaCargando");
                                    capa.find(".bgCapaCargando, .iconoCapaCargando").width(w).height(h);
                                
                           

你需要研究这段代码,因为我在我的项目中使用它,包括类和其他东西,但请确保你理解这个概念。

【讨论】:

【参考方案3】:

这里有一些代码来说明位于here的jeroenjoosen给出的正确答案

CSS

.frameOverlay 
     height: 100%;
     width: 100%;
     background: rgba(34, 34, 34, 0.5); // transparent is an option or a color
     position: absolute;
     top: 0;
     left: 0;
     display: none;

HTML

<div class="frameOverlay"></div> <!--place anywhere within the body -->

jQuery

<script>
      $(function() 
        $( "#draggable" ).draggable(
            start: function() 
                $('.frameOverlay').fadeIn('fast');
            ,
            stop: function() 
                $('.frameOverlay').fadeOut('fast');
            
        );
      );
</script>

【讨论】:

以上是关于jQuery 可拖动 IFrameFix的主要内容,如果未能解决你的问题,请参考以下文章

滚动可拖动项目的内容时禁用jQuery拖动

带有可点击对象的jQuery可拖动列表 - 防止点击拖动

Jquery 可拖动占位符

克隆时的jQuery可拖动元素不可拖动

jQuery:可拖动连接到可排序。可拖动项目与可排序列表具有不同的 DOM

jQuery 可拖动和可拖放,在可拖动 ul 上滚动