Javascript 定位位于与父窗口相关的iframe内部的jquery对话框

Javascript 定位位于与父窗口相关的iframe内部的jquery对话框,javascript,jquery,jquery-ui,jquery-plugins,Javascript,Jquery,Jquery Ui,Jquery Plugins,大家好 我有一个网站,上面有一个很大的卷轴,中间有一个iFrAME。 设置为没有卷轴,其高度为3000 无论如何,在iframe中打开的文档中有一个jquery对话框 当我看着父母的头顶 然后单击iframe中打开对话框的按钮 对话框在iframe的中间打开,我看不到它 这是因为它是基于文档而不是顶层文档进行计算的 我怎样才能改变这一点 因此,如果我的滚动条一直在父级中向下,则iframe内的对话框将在iframe底部打开,我可以在那里看到它。。换句话说,与父文档的位置相关 以下是我打开对话框的

大家好

我有一个网站,上面有一个很大的卷轴,中间有一个iFrAME。 设置为没有卷轴,其高度为3000

无论如何,在iframe中打开的文档中有一个jquery对话框

当我看着父母的头顶 然后单击iframe中打开对话框的按钮 对话框在iframe的中间打开,我看不到它

这是因为它是基于文档而不是顶层文档进行计算的

我怎样才能改变这一点

因此,如果我的滚动条一直在父级中向下,则iframe内的对话框将在iframe底部打开,我可以在那里看到它。。换句话说,与父文档的位置相关

以下是我打开对话框的方式:

generalDialog.dialog({
   bgiframe:false, height:p_height, width:480, modal:true, autoOpen:false, hide:'fadeout', show:'slide', closeOnEscape:true}); generalDialog.dialog("open");

提前感谢

进行计算时,您应该使用self.parent引用包含iframe的文档对象,否则计算将基于iframe中的文档对象。这就是当前导致对话框位于iframe中文档对象的中心,而不是包含iframe的父页面的文档对象的原因。希望有意义:)

我让它工作了

这就是您需要在jquery对话框插件中更改的内容 这是一个非常好的更改,因为它使对话框可以从iframe以及普通页面工作

(这仅在您位于同一域上时有效)

以下是您需要更改的行:

这个:

pTop = doc.scrollTop()
pTop += (wnd.height() - this.uiDialog.outerHeight()) / 2;
为此:

pTop = $(top.document).find("html").scrollTop()
pTop += ($(top.document).find("html").attr("clientHeight") - this.uiDialog.outerHeight()) / 2;       
还有这个:

pTop += (wnd.height() - this.uiDialog.outerHeight()) / 2;
为此:

pTop = $(top.document).find("html").scrollTop()
pTop += ($(top.document).find("html").attr("clientHeight") - this.uiDialog.outerHeight()) / 2;       

这就解决了问题。

如果你把javascript粘贴到这里,也许有人能帮你解决问题。是的,我说的正是。。。我知道是什么导致了这个问题,只是不知道我需要对对话框做些什么来修复它。要更改的代码以及所有这些。。。此外,对于普通窗口(而不仅仅是iframe内部打开的窗口),修复也必须是正常的。。因为还有其他页面使用这个jquery插件avcorse tnx