我这里的代码来自我的“操作系统”,我正在尝试通过将iframe放入AppWindows中并将PHP代码作为后端或(主程序过程)在浏览器中创建。

现在,在每个GUI系统中,您都可以移动窗口,将窗口彼此堆叠等等,但是我无法使用jQuery和jQuery-UI在HTML中高效地进行操作。

我正在使用draggable()和在StackOverflow上发现的一些技巧,能够将div AppWindow置于顶部。



问题

用于将AppWindow置于顶部的代码可以正常工作,但是问题在于该窗口内的iframe会重置,因为此代码正在执行的操作是将当前div作为第一个div堆叠在父容器中所有其他div之上。

http://nurky.rf.gd/code/AppWindowIssue/

如果您发现单击该窗口时AppWindow 1 iframe闪烁,则我不希望这样做。





代码(jQuery)

$(function() {
    // Don't know what I'm doing with iframe here...
    $('.AppWindow iframe').click(function(){
        $(this).parent().child.parent().append(this);
    });
    $('.AppWindow').click(function(){
        $(this).parent().append($(this));
    });
    $('.AppWindow').draggable({handle:".DragHandle"});
});




结论

如果有防止这种情况发生的方法,请在下面写下答案。如果您有更好的方法(例如“ JavaScript OS UI框架”)或类似的方法,则可以在下面更加自由地编写。我想要像os.js或windows93.net之类的东西。我需要的只是一个工作任务栏,一个工作窗口,以及一种轻松地在该窗口中嵌入PHP页面的方法,该方法将模仿应用程序的工作。

最佳答案

我认为不可能。看看here



为什么要通过首先更改窗口在dom中的位置来重新排序窗口?您可以简单地使用z-index。一个基本示例,您只需设置目标框架的活动类。

$(function() {
    $('.AppWindow').draggable({
        handle:".DragHandle",
        drag: function(event, ui){
            updateActiveWindow(event.target);
        }
    });

    $('.AppWindow').on('click', function(){
        updateActiveWindow(this);
    });

    function updateActiveWindow(el) {
        $('.AppWindow').removeClass('active');
        $(el).addClass('active');
    }
});


随着以下CSS更改

.AppWindow.ui-draggable-dragging,
.AppWindow.active {
    z-index: 1;
}


编辑:对js进行了一些优化,以便一旦开始拖动,窗口就会变为活动状态。

10-06 00:49