При создании всплывающего окна с главной страницы с помощью window.open дочерняя / всплывающая страница использует событие onload, которое должно отображать его ширину / высоту. Однако в Chrome это всегда приводит к 0. Проверка ширины / высоты окна и документа (с или без jQuery) вернет только 0. Как ни странно, загрузка дочерней страницы на вкладке сама по себе всегда правильно сообщает ширину / высоту.
Это правильное поведение? Что-то не так с событием загрузки? С хромом? Есть ли другое событие, которое я могу ждать, чтобы убедиться, что свойства ширины / высоты, в частности, установлены?
Если в onload установлен тайм-аут, вы, вероятно, получите правильные значения. Но, похоже, это просто игра в догадки о том, как долго ждать, прежде чем проверять ширину / высоту. Неужели нет способа ждать определенного события, чтобы точно знал , что ширина / высота дочернего окна установлена в Chrome?
Быстрая демонстрация ниже с обеими страницами. Надеясь, что у кого-то может быть какое-то решение, которое не предполагает угадывание неопределенного количества времени для установки в setTimeout.
Редактировать : Забыл упомянуть, я проверял это на версиях Chrome 14 / 15.
main.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title>main</title>
</head>
<body>
<input type="button" value="Pop" onclick="window.open('http://localhost:8085/social_test/test.html', 'namedWnd', 'width=320,height=240')" />
</body>
</html>
test.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title>test</title>
<script type="text/javascript" src="jquery-1.6.4.js"></script>
<script type="text/javascript">
$(window).load(function(){
var report = function() {
alert($(window).width() + " x " + $(window).height());
};
report();
//window.setTimeout(report, 1000);
});
// without any jquery
/*window.onload = function() {
var report = function() {
alert(window.innerWidth + " x " + window.innerHeight);
// or document's size
//alert(window.document.documentElement.clientWidth
// + " x " + window.document.documentElement.clientHeight);
};
report();
//window.setTimeout(report, 1000);
};*/
</script>
</head>
<body/>
</html>