Высота window.open в Google Chrome не такая, как в других браузерах.

Я использую javascript window.open, чтобы открыть окно браузера по щелчку пользователя на указанной ширине и высоте (760x581), и это правильно работает в Internet Explorer, Safari и Firefox, но Google Chrome вызывает у меня проблемы. В других браузерах высота правильно используется как высота содержимого, но в Google Chrome высота фактического окна браузера составляет 581 пиксель, а не содержимого. Есть ли способ исправить это?

<a href="http://domain.com/example.php" onclick="window.open('http://domain.com/example.php', '', 'width=760, height=581, top=15, left=15, toolbar=0, menubar=0, scrollbars=1, resizable=1, copyhistory=0, location=0, directories=0, status=1, titlebar=1, personalbar=0');return false">click here</a>

person James Simpson    schedule 11.08.2010    source источник
comment
В качестве примечания: «нажмите здесь» вряд ли когда-либо будет хорошим текстом ссылки. ;)   -  person Marcel Korpel    schedule 12.08.2010
comment
Ха-ха, ну, очевидно, просто пример ;-)   -  person James Simpson    schedule 12.08.2010


Ответы (3)


Поэтому я еще немного повозился и обнаружил, что некоторые браузеры поддерживают свойство innerHeight для window.open, и следующее работает, как и ожидалось, во всех браузерах с желаемой высотой содержимого 775 пикселей с добавлением 50 пикселей только в Chrome:

window.open($(this).attr('href'), 'videoplayer',
   'width=1242, height=775, innerHeight=825, location=no, menubar=no, status=no, titlebar=no, scrollbars=no'
);

Я тестировал это в Chrome 6.0.472.63, Firefox 3.6, 3 и 2, IE 8 и 7 и Opera 10.62. Когда я использовал только height, Chrome был примерно на 50 пикселей короче и имел полосы прокрутки, но все браузеры выше были в порядке. С добавленным свойством innerHeight, установленным на 50 пикселей больше, чем я хочу, оно работало в Chrome, а также во всех других браузерах.

Обновление: похоже, это создает проблему в Safari из-за добавления высоты в 50 пикселей. Буду искать способы обойти это.

person donut    schedule 14.10.2010
comment
Недавно протестировал это с Chrome 14+, и похоже, что это больше не проблема. - person donut; 20.10.2011

Проблема все еще сохраняется (Chrome17+), если вы вызываете window.open с высотой = 600, внутренняя высота окна результата составляет 564 пикселя, что составляет 36 пикселей (для строки заголовка в Windows). Высота строки заголовка зависит от платформы, поэтому это очень раздражает.

Мое решение просто добавляет разницу в высоту.

person littlestove    schedule 03.12.2011

Что ж, из того, что я смог найти после более чем часа поиска в Google, это то, что Google Chrome делает это именно так, и нам нужно просто использовать обходной путь. То, что я делаю прямо сейчас, если не будет найдено что-то лучшее, просто помещаю следующий JS на страницу, которую я открываю:

if (navigator.appVersion.indexOf('Chrome')>0) {
    window.resizeBy(0, 581 - window.innerHeight);
}
person James Simpson    schedule 12.08.2010
comment
Спасибо за решение. Похоже, по крайней мере, на Mac Chrome добавляет 50 пикселей к высоте. Не знаю, если на других платформах по-другому. Действительно раздражает, когда любой другой браузер ведет себя правильно. Заставляет меня задуматься, является ли это просто ошибкой или есть какой-то другой параметр, который можно установить при использовании window.open в Chrome. - person donut; 14.10.2010