我现在已经测试了很多东西,我知道它并不是最优的,但我需要从主页拖放到 iframe 。两者都在同一个域名上。
我已经使用iframeFix进行了测试,但我的浏览器(Chrome)不支持它,或者我做错了。
http://api.jqueryui.com/draggable/#option-iframeFix
<div id="mycontainer" class="mycontainer">
<iframe id="iframewindow" src="./child.html" frameborder="0" width="100%" height="100%"></iframe>
</div>
iframe中的:
<div id="sortable">
<div class="portlet">
some content
</div>
</div>
(我在iframe中使用jQuery UI进行排序。)
在主页面内加载draggable的脚本:
$(function() {
$( ".draggable" ).draggable({
connectToSortable: "#sortable",
helper: "clone",
iframeFix: true,
helper: function(event) {
return "<div class='custom-helper'>I move this</div>";
},
revert: "invalid",
});
$().disableSelection();
)};
我已经测试了制作叠加等,但不知怎的,我还没有得到它的工作。
这是一种从html页面拖放到iframe的方式吗? (在所有浏览器中?)
如果其他解决方案运行良好,我不需要jQuery UI可拖动。
答案 0 :(得分:3)
我找到了这个答案并且能够应用它:jQuery-ui droppable to sortable inside iframe
这是我的小提琴:https://jsfiddle.net/Twisty/gkxe8vpy/4/
<强> HTML 强>
<div id="mycontainer" class="mycontainer">
<iframe id="iframewindow" src="" frameborder="0" width="100%" height="100%"></iframe>
</div>
<div id="draggable" class="ui-state-highlight">Drag Me</div>
<强>的JavaScript 强>
/**
* Code to populate iFrame, mimics actual SRC
*/
var frameHTML = "<div id='sortable'><div class='portlet'>some content</div></div>";
var $iframe = $("#iframewindow");
$iframe.ready(function() {
$iframe.contents().find("body").html(frameHTML);
});
/**
* End of iFrame code
*/
$(function() {
$("#draggable").draggable({
connectToSortable: $iframe.contents().find("#sortable").sortable({
items: "> div",
revert: true,
}),
helper: "clone",
iframeFix: true,
helper: function(event) {
return "<div class='custom-helper'>I move this</div>";
},
revert: "invalid"
});
$iframe.contents().find("#sortable").disableSelection();
});
这里的“技巧”是将sortable创建为connectToSortable
选项的目标。这将根据需要返回selector
,并且2对象将相互了解。
请注意,您的iframe应该只是纯HTML(不要在那里初始化可排序或者行为不端)