jQuery ui 可拖动拖放到 iframe

Posted

技术标签:

【中文标题】jQuery ui 可拖动拖放到 iframe【英文标题】:jQuery ui draggable drop into an iframe 【发布时间】:2013-01-27 09:52:13 【问题描述】:

我正在尝试使用可拖动和可放置的 jQuery ui,如果我在同一页面上尝试,它可以正常工作。但是当我尝试将一个元素拖放到 iframe 中定义的可放置区域时,它就不能完美地工作。它可以工作,但不适用于 iframe 中的整个可放置区域,并且它也可放置在框架外。

这就是我所做的

我的主页:Home.html

<!DOCTYPE html>
<html><head>
    <title>jQuery UI Draggable</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
    <link href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" rel="stylesheet">

    <script type="text/javascript">
        $(function () 
            $("#FirstDiv").draggable( revert: "invalid",iframeFix: true );
            $("#SecondDiv").draggable( revert: "invalid" );
            $("#frame").load(function () 
                var $this = $(this);
                var contents = $this.contents();
                contents.find('.DroppableDiv').droppable(
                    drop: function (event, ui)  alert('dropped'); 
                );
            );
        );
    </script>
</head>
<body style="cursor: auto;" >

<div class="demo">
<div id="mainDiv" style="background-color: #FAE6B6; height:200px">
<div id="FirstDiv" style=" border-style:solid; border-width:1px; font-size:medium; height:20px; width:300px">First Div</div>
<div id="SecondDiv" style=" border-style:solid; border-width:1px; font-size:medium; height:20px; width:300px">Second Div</div>
</div>
</div>
<iframe id="frame" src="test.html" style="width: 800px; height: 400px"></iframe>

</body></html> 

这是我的 iframe 内容 test.html

<!DOCTYPE html>
<html>
<head>
    <title>jQuery UI Draggable - inner html</title>
    <style>
     .DroppableDiv 
        background-color:red;
        height: 500px;
        width: 500px;
     
    </style>
</head>
<body style="cursor: auto;">
    <div class="DroppableDiv">
    </div> 
</body>
</html>

【问题讨论】:

【参考方案1】:

你可以试试这样的:

$('#draggables div', parent).draggable();

这里也有几个不同的答案:

https://web.archive.org/web/20170426075018/http://jqfaq.com/how-to-implement-drag-and-drop-between-iframes/

jQuery and iframes and weird positioning: is there a workaround?

祝你好运!

【讨论】:

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

JQuery UI - 可拖动元素被拖放到可放置区域的多个可放置区域按比例缩小

将同一元素拖放到 Jquery UI 中的多个拖放区域

jQuery UI 重新生成(僵尸)可拖动元素

JQuery-UI 可拖动项变为不可拖动

jQuery-UI 可拖动和可放置项目变为不可拖动

Jquery UI 可拖动:如果按下 Ctrl 则克隆