我正在开发一个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"时,一切都工作得很完美,因为没有更多的"覆盖",但当然现在我必须找到一些解决方案来"禁用"我背后的文档。
有什么线索我怎么能使用"模态"属性作为"真"?
谢谢
3条答案
按热度按时间jfewjypa1#
您正在尝试在 AJAX 调用上初始化一个对话框,因此每次Jquery初始化一个新对话框时,请尝试以下操作:
onload初始化对话框。
在 AJAX 调用中,只需使用open调用对话框。
高温加热
uqjltbpv2#
至于访问后面的页面,即使是在模态模式下,因为你是在一个iframe中,捕捉事件的div不会扩展到你的iFrame之外。这有很好的理由,但在我们(FB应用开发人员)需要合法地这样做的情况下,这是令人恼火的。
现在,如果模态没有在iFrame模态中创建页面,那是另外一回事。
fiei3ece3#
我遇到了同样的问题,我解决它的方法是在对话框启动后使用jquery添加一个内联样式,如下所示:
我发现!important对于它的工作是必要的。由于这种插入方法,这行代码确实替换了发送到浏览器的jquery ui-widget-overlay内联样式。我发现这一点很困难,因为我最初没有放入z索引,所以它使overlay位于对话框的顶部,这使得对话框不可点击。所以,简而言之,你可能需要修改z轴的值。