Эмуляция clientHeight и clientWidth

Discussion in 'Предложения' started by SKolontay ✔, Oct 12, 2017.

  1. SKolontay ✔

    SKolontay ✔ Client

    Joined:
    Aug 20, 2016
    Messages:
    96
    Likes Received:
    23
    Если посмотреть на https://whoer.net/#extended в поле "window size", то значение для этого поля берется на основе document.documentElement.clientHeight и document.documentElement.clientWidth, а не из свойств объекта window.screen

    Clip2net_171013010053.png

    В результате чего, если на рабочей машине реальный размер экрана, к примеру, 1366x768, а надо надо сэмулировать размера окна 1600x900, то размер рабочей области максимум эмулируется 1333x666.

    Плюс я смотрю люди уже задавались вопросами (например, тут http://zennolab.com/discussion/threads/window-size-vopros-na-kotoryj-nikto-ne-znaet-otvet.33212/), как эмулировать это поле правильно и так и не поняли, откуда берутся эти значения.

    Поэтому предлагаю добавить эмуляцию полей:
    1. document.documentElement.clientHeight
    2. document.documentElement.clientWidth
     
  2. VladZen

    VladZen Administrator Staff Member

    Joined:
    Nov 5, 2014
    Messages:
    14,323
    Likes Received:
    3,487
    Как мне пояснили разработчики. в лоб эмулировать не получится, потому что поедет верстка на сайте.
    Правильно это использовать через instance.SetWindowSize или что-то типа этого, а потом переходить на страницу.
    Вообщем вопрос непростой и требует разбора. Попробуем сделать функцию, которая будет эмулировать viewPort, т.е. подставлять нужный размер в браузере, и если он будет не умещаться. то будут появляться скролы.
     
  3. SKolontay ✔

    SKolontay ✔ Client

    Joined:
    Aug 20, 2016
    Messages:
    96
    Likes Received:
    23
    Это не спасет от ситуаций:

    Я создал тему http://zennolab.com/discussion/thre...ra-okna-brauzera-ego-polozhenija-i-t-d.42221/ по поводу эмуляции JS свойств, касающиеся размеров окна, его положения и т.д. Может вам пригодится, когда будете принимать решение подойти к данному вопросу системно.
     
  4. SKolontay ✔

    SKolontay ✔ Client

    Joined:
    Aug 20, 2016
    Messages:
    96
    Likes Received:
    23
    Кстати, походу баг обнаружил. Если использовать
    Code (text):
    1. instance.SetWindowSize(2000, 900);
    то ничего не изменяется

    Если использовать:
    Code (text):
    1. project.Profile.ScreenSizeHeight = 900;
    2. project.Profile.ScreenSizeWidth = 2000;
    то меняются window.screen.width и window.screen.height

    Приложил проект, в котором тестировал. Тестировал в ZP 5.12.0.0

    Это баг? Или я не понимаю, как SetWindowSize() должна работать?
     

    Attached Files:

  5. Dimionix

    Dimionix Moderator

    Joined:
    Apr 9, 2011
    Messages:
    3,079
    Likes Received:
    2,600
    Метод SetWindowSize работает только в ZennoPoster.
     
    copper12 and zortexx like this.
  6. SKolontay ✔

    SKolontay ✔ Client

    Joined:
    Aug 20, 2016
    Messages:
    96
    Likes Received:
    23
    Угу

    Так что вопрос это не снимает )
     
  7. SKolontay ✔

    SKolontay ✔ Client

    Joined:
    Aug 20, 2016
    Messages:
    96
    Likes Received:
    23
    Тут я был не прав. Посмотрел JS скрипты от whoer.net. В зависимоти от условия, значения там берутся на основе:
    • document.body.offsetWidth
    • document.body.offsetHeight
    • document.body.width
    • document.body.height
    • document.body.clientWidth
    • document.body.clientHeight

    Сам кусок JS скрипта от whoer.net:

    Code (text):
    1. function get_window_size() {
    2.     var win_width = "?";
    3.     var win_height = "?";
    4.     try {
    5.         if (document.all) {
    6.             win_width = document.body.offsetWidth;
    7.             win_height = document.body.offsetHeight;
    8.         } else if (document.layers) {
    9.             win_width = document.body.width;
    10.             win_height = document.body.height;
    11.         } else if (document.body.clientWidth != null) {
    12.             win_width = document.body.clientWidth;
    13.             win_height = document.body.clientHeight;
    14.         }
    15.     } catch (e) {};
    16.     return win_width + "x" + win_height +
    17.         " (" + screen.width + "x" + screen.height + ")";
    18. }
     
  8. topor88

    topor88 Новичок

    Joined:
    Nov 24, 2017
    Messages:
    4
    Likes Received:
    0
    Админы обратите внимание на http://zennolab.com/discussion/threads/planiruetsja-li-dobavit-podmenu-webgl.42451/
     

Пользователи просматривающие тему (Пользователей: 0, Гостей: 0)