【发布时间】:2012-01-03 12:05:40
【问题描述】:
我有一个布局相当复杂的页面。最初打开页面时,某些元素的对齐存在问题。但是,可以通过更改浏览器窗口的大小(永久)解决此问题。
显然我不希望用户必须调整浏览器窗口的大小才能正确显示页面,所以我想知道是否有一种方法可以在页面首次加载?
更新
我发现以下代码将触发附加到窗口的调整大小事件的任何处理程序:
if (document.createEvent) { // W3C
var ev = document.createEvent('Event');
ev.initEvent('resize', true, true);
window.dispatchEvent(ev);
} else { // IE
document.fireEvent('onresize');
}
我确认这确实触发了窗口的调整大小事件处理程序,但是当我在 Firebug 控制台中运行此代码时,它并没有解决布局问题。
因此,在调整浏览器大小时修复布局的代码似乎不是窗口调整大小事件的处理程序,而是其他事情的处理程序。如何追踪我需要触发的事件处理程序?
是否有可能当手动调整浏览器大小时,resize 事件会向下传播到 window 的所有子级,但是当执行上面的代码时,resize 处理程序只会在 window 本身上触发?
【问题讨论】:
-
问题是否可以自行解决,或者您是否有调整大小的处理程序可以为您解决问题?
-
这似乎有点古怪和 hacky。可能有一种更清洁的方法来解决问题。发布演示页面
-
你不能首先处理与 css 的对齐吗?这就是要走的路,想想看:你会使用自动调整浏览器大小的服务或/来自网站吗?
-
@Alnitak 问题似乎可以自行解决。我不知道有任何调整大小处理程序
-
您可以通过打开
Developer tools->Scripts tab->Event Listener Breakpoints->Control->Resize来查看谷歌浏览器页面上是否有任何调整大小处理程序刷新页面。
标签: javascript dom dom-events