Как правильно выставить разрешение экрана и браузера в снипете?

  • Автор темы Автор темы Mikhail B.
  • Дата начала Дата начала

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 449
Реакции
5 477
Баллы
113
Есть снипет

C#:
Развернуть Свернуть Копировать
// установка рандомных размеров окна и инстанса
Random rnd = new Random();
string[] monitorSizeArr = {"360|740","360|740","360|740"};
string monitorSize = monitorSizeArr[rnd.Next(0,3)];
string[] split = monitorSize.Split(new[] {"|"}, StringSplitOptions.None);

int ScrSizeWidth = Convert.ToInt16(split[0]);
int ScrSizeHeight = Convert.ToInt16(split[1]);
int AvailScrWidth = ScrSizeWidth;
int AvailScrHeight = ScrSizeHeight;
int WindowSizeWidth = ScrSizeWidth;
int WindowSizeHeight = ScrSizeHeight -100;
int OuterWidthShift = rnd.Next(7, 25);
int OuterHeightShift = rnd.Next(96, 140);

project.Profile.ScreenSizeWidth = ScrSizeWidth;
project.Profile.ScreenSizeHeight = ScrSizeHeight;
project.Profile.AvailScreenWidth = AvailScrWidth;
project.Profile.AvailScreenHeight = AvailScrHeight;
project.Profile.OuterWidthShift = OuterWidthShift;
project.Profile.OuterHeightShift = OuterHeightShift;
instance.SetWindowSize(WindowSizeWidth, WindowSizeHeight);

Надо сделать что бы тут https://browserleaks.com/javascript
Были корректные значение схожие с оригинальным на телефоне.

А именно. Красным выделена видимая часть браузера, видите она меньше, т.е. бар барузера не учитывается. В профилях такое не генерится, да и в коде я сделал что бы viewport изменился, но значения снизу остались не изменными.
В общем можете даже на своем телефоне проверить. Как он показывает разрешение, и как PM его генерит.


2020-07-22_043946.jpg
 
Последнее редактирование:
Есть снипет

C#:
Развернуть Свернуть Копировать
// установка рандомных размеров окна и инстанса
Random rnd = new Random();
string[] monitorSizeArr = {"360|740","360|740","360|740"};
string monitorSize = monitorSizeArr[rnd.Next(0,3)];
string[] split = monitorSize.Split(new[] {"|"}, StringSplitOptions.None);
  
int ScrSizeWidth = Convert.ToInt16(split[0]);
int ScrSizeHeight = Convert.ToInt16(split[1]);
int AvailScrWidth = ScrSizeWidth;
int AvailScrHeight = ScrSizeHeight;
int WindowSizeWidth = ScrSizeWidth;
int WindowSizeHeight = ScrSizeHeight -100;
int OuterWidthShift = rnd.Next(7, 25);
int OuterHeightShift = rnd.Next(96, 140);

project.Profile.ScreenSizeWidth = ScrSizeWidth;
project.Profile.ScreenSizeHeight = ScrSizeHeight;
project.Profile.AvailScreenWidth = AvailScrWidth;
project.Profile.AvailScreenHeight = AvailScrHeight;
project.Profile.OuterWidthShift = OuterWidthShift;
project.Profile.OuterHeightShift = OuterHeightShift;
instance.SetWindowSize(WindowSizeWidth, WindowSizeHeight);


Надо сделать что бы тут https://browserleaks.com/javascript
Были корректные значение схожие с оригинальным на телефоне.


Посмотреть вложение 60341
Все просто, я этот использую, да без разницы какой сниппет, его для примера.
C#:
Развернуть Свернуть Копировать
instance.SetBrowserPreference("network.proxy.socks_remote_dns", true);
Random r = new Random();
 
// Формируем набор популярных десктопных разрешений [Идея хранения позаимствована у doc'a, за что ему большая благодарность!]
int [,] resolutionSet = {
    {360, 640}
    //{480, 640}
};
// Получаем рандомное разрешение и устанавливаем
int resolution = r.Next(resolutionSet.Length/2);
project.Profile.ScreenSizeWidth = resolutionSet[resolution, 0];
project.Profile.ScreenSizeHeight = resolutionSet[resolution, 1];
var TestW = Convert.ToInt32(resolutionSet[resolution, 0]);
var TestH = Convert.ToInt32(resolutionSet[resolution, 1]);

instance.SetWindowSize (TestW, TestH);
// Видимая область
project.Profile.AvailScreenWidth = project.Profile.ScreenSizeWidth-17;
project.Profile.AvailScreenHeight = project.Profile.ScreenSizeHeight-40;
// Глубина цвета монитора (Color Depth)
// [Чуть позже будет обновление механизма установки этого параметра]
instance.SetScreenPreference("screen_color_depth", 24);


60342


60345
{-Profile.ScreenSizeWidth-}
{-Profile.ScreenSizeHeight-}
 

Вложения

  • 1595380065927.png
    1595380065927.png
    81,2 KB · Просмотры: 48
  • 1595380084595.png
    1595380084595.png
    64,5 KB · Просмотры: 42
  • Спасибо
Реакции: maxim.gutareff
Все просто, я этот использую, да без разницы какой сниппет, его для примера.
Ну так он не решил поставленную задачу. Такие разрешения и профиль генерит. Я щас подправлю пост, что бы понятнее было что мне надо.

UPD. Подправил.

UPD. + у тебя появился скролл, которого в мобилке нету.
 
Ну так он не решил поставленную задачу. Такие разрешения и профиль генерит. Я щас подправлю пост, что бы понятнее было что мне надо.

UPD. Подправил.

UPD. + у тебя появился скролл, которого в мобилке нету.
Мой нокиа 6 так, но да что-то не сходится.
Во ты тему подкинул, теперь я тоже буду думать как решить эту проблему
Screenshot_20200722-041707.png
 
  • Спасибо
Реакции: eee и Mikhail B.
// Видимая область
project.Profile.AvailScreenWidth = project.Profile.ScreenSizeWidth-17;
project.Profile.AvailScreenHeight = project.Profile.ScreenSizeHeight-40;
// Глубина цвета монитора (Color Depth
На мобилах есть полосы прокрутки ?
 
C#:
Развернуть Свернуть Копировать
// Видимая область
project.Profile.AvailScreenWidth = project.Profile.ScreenSizeWidth-17;
project.Profile.AvailScreenHeight = project.Profile.ScreenSizeHeight-40;

Это все не правильно
1. для мобилы это вообще автомитически считается и учитывает как раз полосу прокрутки которой нет. Т.е. смещения тут равны нулю реально
2. -17 и -40 смещения - надо проверять на разных девайсах. Сколько я смотрел - даже не дескстопе может отличаться.
3. Вручную сюда считаю что лучше вообще не лазить. Лучше (без багов) выставить возможности нету, а еще хуже - легко.

Вот баг с полосой прокрутки
 
Подробности читаем тут https://developer.mozilla.org/en-US/docs/Web/API/Screen

В частности
Screen.availHeightSpecifies the height of the screen, in pixels, minus permanent or semipermanent user interface features displayed by the operating system, such as the Taskbar on Windows.

И где-то на форумах буржуйских прогеров эта тема тоже разжовывалась как правильно считать, но я потерял где.
 
  • Спасибо
Реакции: watersquad
C#:
Развернуть Свернуть Копировать
// Видимая область
project.Profile.AvailScreenWidth = project.Profile.ScreenSizeWidth-17;
project.Profile.AvailScreenHeight = project.Profile.ScreenSizeHeight-40;

Это все не правильно
1. для мобилы это вообще автомитически считается и учитывает как раз полосу прокрутки которой нет. Т.е. смещения тут равны нулю реально
2. -17 и -40 смещения - надо проверять на разных девайсах. Сколько я смотрел - даже не дескстопе может отличаться.
3. Вручную сюда считаю что лучше вообще не лазить. Лучше (без багов) выставить возможности нету, а еще хуже - легко.

Вот баг с полосой прокрутки
хочешь сказать лучше оставить зеновскую генерацию?
 
хочешь сказать лучше оставить зеновскую генерацию?
Имею ввиду что как не плюнь, то все криво.
Потому руками не лазить чтобы не сделать еще хуже. В частности вводить коэффициенты там какие-то поправки, вычеты размеров и тд.
Глобально только контролировать размер окна(viewport)
но тут косяк!
Потому что размер viewport не сохраняется в профиле)) (гы гы, привет разрабам, которые считают что это настолько ничтожный параметр, что он не достоин хранения в профиле)
Надо самому для профилей его считать и хранить.
 
Имею ввиду что как не плюнь, то все криво.
Потому руками не лазить чтобы не сделать еще хуже.
Глобально только контролировать размер окна(viewport)
но тут косяк!
Потому что размер viewport не сохраняется в профиле)) (гы гы, привет разрабам, которые считают что это настолько ничтожный параметр, что он не достоин хранения в профиле)
Надо самому для профилей его считать и хранить.
Значит надо делать предложение. Можешь сформировать корректное предложение в разделе предложений? Видно что тебе тема более близка и ты сможешь раскрыть тему)))
 
Значит надо делать предложение. Можешь сформировать корректное предложение в разделе предложений? Видно что тебе тема более близка и ты сможешь раскрыть тему)))
Рас, два, три

Все давно запощено. А толку?)
 
  • Спасибо
Реакции: Mikhail B.
Посмотрел на реальных девайсах по ширине всегда совпадает, то есть нет отступов справа. А вот по высоте иногда бывает значительный отступ - видимо менюшка андроида снизу занимает ...
 
  • Спасибо
Реакции: Mikhail B.
Посмотрел на реальных девайсах по ширине всегда совпадает, то есть нет отступов справа. А вот по высоте иногда бывает значительный отступ - видимо менюшка андроида снизу занимает ...
Вобще кто-то юзает браузер на весь экран? Я даже не знаю можно ли его так юзать)) на компе да F11 нажал и юзай, это как бы простительно еще
 
Посмотрел на реальных девайсах по ширине всегда совпадает, то есть нет отступов справа. А вот по высоте иногда бывает значительный отступ - видимо менюшка андроида снизу занимает ...
Если смотреть сервисами то зенка не может выдать адекватный avail. Тут хоть усчитайся - пофиг.
 
Вобще кто-то юзает браузер на весь экран? Я даже не знаю можно ли его так юзать)) на компе да F11 нажал и юзай, это как бы простительно еще
На мобели браузер всегда фул скрин
 
  • Спасибо
Реакции: luk911
На мобели браузер всегда фул скрин

А это тогда что?


740 фулл высота
612 видимая область браузера, вот именно эту ебалу я не могу эмулировать корректно. она менется в viewport вроде.
А в нижних строчках не меняется. Соответственно не получается полностью повторить разрешения телефона.

2020-07-22_043946-jpg.60341
 
Сейчас выяснить что Айфон - это вам не Андроид))
А какой нибудь EMUI - это вообще не так))

Попробую на разных моделях и производителях проверить.
Может тут от оболочек производителей еще что зависит
Я знаю что строение прошивки для айфонов, самсунгов, хуавеев и остальных - отличается.
А как сильно - еще может надо разбирать
 
у меня реальных телефонов разных производителей под рукой всего то 5 штук.
Статистики много не бывает))
Соберу еще данных - отпишусь

p.s. Параметры inner и outer - еще более хитро считаются и вроде тоже автоматически определяются.
 
  • Спасибо
Реакции: Mikhail B.
А это тогда что?


740 фулл высота
612 видимая область браузера, вот именно эту ебалу я не могу эмулировать корректно. она менется в viewport вроде.
А в нижних строчках не меняется. Соответственно не получается полностью повторить разрешения телефона.

2020-07-22_043946-jpg.60341
Это скорее всего андроидовское меню снизу, если оно у тебя не скрывается. Или строка браузера сверху ...
 
Вот так же как и у меня.

Значит так и должно быть и зенка не может корректно отобразить бар
На андроиде понятно, что нужно отнять высоту верхнего бара и нижнего (если он есть).
А как на iPhone дела должны обстоять?
 
  • Спасибо
Реакции: Mikhail B.
В общем буду зеновское ставить из профиля.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)