0

我有一个带有左窗格和右窗格的容器。您可以从左窗格拖动,然后放在右窗格中。由于某种原因,如果放置目标已经完全被占用,则不会触发 html 5 ondragover 事件。我的放置目标是一个 div,当 ondrop 事件发生时,我会在其中动态创建 iframe。当我第一次从左侧拖动某些东西并将其放到左侧时,我能够创建第一个 iframe。但是现在第二次,如果我从左边拖动一些东西并尝试将它放到右边,ondragover 没有被触发(我放了断点,它没有被击中),因为放置目标已经被我的第一个 iframe 填满. 在 ondragover 监听器中,我想将现有 iframe 的高度降低到一半,以便为创建新 iframe 腾出空间。但不幸的是,ondragover 并没有被触发。有什么方法可以修改 ondragover 的行为,即使放置目标完全被占用,它也会被触发?任何帮助将不胜感激。所以,这里是代码..

function onDragOver(ev) {
 ev.preventDefault();
 if(iframes_count > 4)
 {
   return;
 }
 if (iframes_count == 2)
 {
    if ((getDivLeftCoordinate() < ev.pageX < getDroppableWidth()) && (getDivTopCoordinate() < ev.pageY < getDroppableHeight()/2))
    {
        var existingFrames = document.getElementsByTagName("iframe");
        for (var i = 0; i < existingFrames.length; i++)
        {
          $(this).attr("height" , 500);
        }
    }
 }
 $("#right_pane").css("background-color", "grey");
}

function onDrop(ev) {
 ev.preventDefault();

var data_id = ev.dataTransfer.getData("Text");
var data_id_selector= "#" + data_id;
var content_id = data_id + "content";
var content_id_selector = "#" + content_id;
var url = $(data_id_selector).data("url");
var iframe_width = 100 + "%";
var iframe_height = 100 + "%";


$(data_id_selector).remove();
$("<iframe />", {
class: "myFrame",
id : content_id,

}).appendTo('#right_pane');



$(content_id_selector).attr("height", iframe_height);
$(content_id_selector).attr("width", iframe_width);
$(content_id_selector).attr("src", url);
$(content_id_selector).attr("background-color", "white");
$("#right_pane").css("background-color", "white");
}
4

1 回答 1

0

也许只是语法问题,HTML5 中的事件是dragover(no on)

更多 html5 拖放信息:

于 2012-07-16T15:31:45.613 回答