jquery用户界面对话框用户界面-小部件-覆盖高度问题

snz8szmq  于 2023-01-12  发布在  jQuery
关注(0)|答案(3)|浏览(118)

我正在开发一个Facebook应用程序。
在这个应用程序中,我使用jquery用户界面对话框来显示div内容(来自ajax响应)。
对话框打开时完美地显示了从ajax调用返回的内容。但是出现了一些奇怪的行为。页面(似乎是我的应用程序在fb iframe中被调用)是不断刷新,好像它在永久发布一些数据。更重要的是,"ui-widget-overlay" div的高度,这是由ui对话框动态生成的,是不断增加**,似乎永远不会稳定。可能这两个奇怪的行为有某种联系。无法理解。
因此,即使我使用"modal:true"属性,我可以访问对话框后面的整个页面。
我的代码片段:

$.ajax({

            type : "POST",
            data : "id=1",
            url : site_url + "lists/add_new",
            success : function(response) {
                $('#new_box').html(response);

                $('#new_box').dialog({                  
                    modal: true,
                    position: 'top'
                });
                $('#new_box').dialog( "open" );
                return false;               
            },
            error   : function(XMLHttpRequest, textStatus, errorThrown) {               
                alert(textStatus);
            }

        });

请引导。
谢谢

    • 更新日期:**

看来我找到罪魁祸首了
将"modal"属性设置为"true"会导致覆盖层(对话框和文档之间的透明div)持续调整文档的宽度和高度,通过在Chrome中调试对话框js,我发现它们会永久增加。不确定是什么原因导致了这种情况:|
现在当我将"modal"设置为"false"时,一切都工作得很完美,因为没有更多的"覆盖",但当然现在我必须找到一些解决方案来"禁用"我背后的文档。
有什么线索我怎么能使用"模态"属性作为"真"?
谢谢

jfewjypa

jfewjypa1#

您正在尝试在 AJAX 调用上初始化一个对话框,因此每次Jquery初始化一个新对话框时,请尝试以下操作:
onload初始化对话框。

$(function(){
$('#new_box').dialog({                  
                    modal: true,
                    position: 'top'
                });
});

在 AJAX 调用中,只需使用open调用对话框。

$.ajax({

            type : "POST",
            data : "id=1",
            url : site_url + "lists/add_new",
            success : function(response) {
                $('#new_box').html(response);

                $('#new_box').dialog( "open" );
                return false;               
            },
            error   : function(XMLHttpRequest, textStatus, errorThrown) {               
                alert(textStatus);
            }

        });

高温加热

uqjltbpv

uqjltbpv2#

至于访问后面的页面,即使是在模态模式下,因为你是在一个iframe中,捕捉事件的div不会扩展到你的iFrame之外。这有很好的理由,但在我们(FB应用开发人员)需要合法地这样做的情况下,这是令人恼火的。
现在,如果模态没有在iFrame模态中创建页面,那是另外一回事。

fiei3ece

fiei3ece3#

我遇到了同样的问题,我解决它的方法是在对话框启动后使用jquery添加一个内联样式,如下所示:

$('.ui-widget-overlay').attr('style', 'height: 1001px !important; z-index: 1001;');

我发现!important对于它的工作是必要的。由于这种插入方法,这行代码确实替换了发送到浏览器的jquery ui-widget-overlay内联样式。我发现这一点很困难,因为我最初没有放入z索引,所以它使overlay位于对话框的顶部,这使得对话框不可点击。所以,简而言之,你可能需要修改z轴的值。

相关问题