Алексей Николаев:
Тут начинает тогда появляться проблема:
- Вы имеете графический макет, даже если он разнесен по слоям.
- Дизайнер нифига не будет заморачиваться с размерами блоков в PSD/CDR/AI, т.е. Ваш блок в верстке не будет соответствовать размерам блока в макете. Хоть и будут визуально выглядеть идентично (например добавили margin/padding/position).
В итоге: как бы вы не пытались распарсить исходный макет и сопоставить его с версткой - потерпите неудачу.
Выход:
1 вар. Cопоставлять различия вышеприведенным мною способом (можно подточить, например написав на JS плагин лупы, для наилучшего "разглядывания").
2 вар. Писать десктопную или серверную программу, которая будет автоматически искать критическую разницу между двумя изображениями, пытаться определять что находится в вверстке над критическими точками и собирать названия элементов, которым стоит уделить внимание.
3 вар. Наркоманский. Перед версткой, взять макет, отрисовать все критические блоки в SVG, сопоставлять верстку и SVG по координатам.
ИМХО: 1 вариант самый практичный и дешевый, если нет потока, скажем, в 100 страниц в день.
Teamviewer не позволит проводить слишком длинные сессии, это раз. Два - это проблема с трансляцией видеопотока на САЙТ. Три - очень плохая поддержка железа, TV не на каждое мобильное устройство с ведроидом встает.
seredaes: Вы присваиваете переменной var fdx = new FormData(); результат функции, а после этого добавить в полученное fdx.append('type', 'avatar');
Каша какая-то по-моему.
Что дает консоль в таком случае?
var fdx = new FormData();
console.log(fdx);
fdx.append('type', 'avatar');
console.log(fdx);
Worddoc: Да, вы верно ответили на свой же вопрос. В будущем может ожидаться изменение значения переменной number. Иначе нет смысла присваивать одну переменную другой в пределах функции.
И да, как может глючить php функция?
RequestBlock = true присваивается в любом случае (успех/ошибка) только после получения ответа, повторное обращение не возможно, пока запрос не прекратится по какому-либо условию. Т.е. в вашем случае, получив ответ - функция php должна была бы прекратить работу.
Может быть проблема не на клиенте?
В итоге процесс происходит так.
Оболочка 1 - запрашивает оболочку 2 - запрашивается оболочка 3 и по цепочке далее. В некоторых случаях используются циклы. Это верно только для первичной загрузки, с которой собственно и проблемы.
И из оболочки 1 приходит return Result, где содержится текстовая строка или объект со всеми нужными данными из подчиненных модулей, как я уже говорил. А уже эта строка отдается на постановку в DOM document.getElementsByTagName('body') = CreateHtml()
И вот именно на этом моменте начинаются проблемы. Т.е. пока я запрашивал CreateHtml() с конским размером - проблем не было, 30-40мс генерации, с условием того, что я забираю данные из трех объектов. Но как только я собираюсь CreateHtml() посадить на страницу - тут появляется проблема описанная ранее, парсинг и рендеренг DOM занимает много времени.
Ситуация в том, что я не могу собирать и вставлять модули постепенно при первичной загрузке. При дальнейшей работе - запросто.
По этому, еще раз повторюсь, я получаю достаточно ёмкий объем строки или объекта, который потом надо отдать браузеру на рендер и тут происходит заминка, т.к. рендерится долго. На мощной машине, да, я с Вами согласен, счет может идти на десятки или сотни миллисекунд, на офисных машинах - увы, секунды.
На счет promise - заинтересовали. Не подскажете в какую сторону копать, имея на руках допустим строку вида: var h = '...'; ?
Dark Hole: В конечном счете пришлось отказаться от генерации html-кода через Jquery append. В цикле на 100 итераций, у блока с вложенными 20 элементами - время рендера от 3000 мс на средненьком клиентском железе.
Спасибо за ответ!
Функция listElements(o) вызывается из иной функции или события. Это легко заметить по передаваемому значению 'o'. Если вы про вложенную функцию listElements_randClass(), то да, она тоже вызывается. Так что код рабочий. В данном примере предоставлен просто кусок кода который генерирует элемент(ы) и возвращает результат.
Меня интересует возможность, как используя метод append, сохранить условие без использования функции. Вынос условия за пределы переменной result - не подходит.
Эка вы, товарищ, как глубоко в дебри Тостера залезли. Спасибо, на то время я закрыл проблему достаточно быстро, а сейчас и решение уже само по себе не актуально.
Тут начинает тогда появляться проблема:
- Вы имеете графический макет, даже если он разнесен по слоям.
- Дизайнер нифига не будет заморачиваться с размерами блоков в PSD/CDR/AI, т.е. Ваш блок в верстке не будет соответствовать размерам блока в макете. Хоть и будут визуально выглядеть идентично (например добавили margin/padding/position).
В итоге: как бы вы не пытались распарсить исходный макет и сопоставить его с версткой - потерпите неудачу.
Выход:
1 вар. Cопоставлять различия вышеприведенным мною способом (можно подточить, например написав на JS плагин лупы, для наилучшего "разглядывания").
2 вар. Писать десктопную или серверную программу, которая будет автоматически искать критическую разницу между двумя изображениями, пытаться определять что находится в вверстке над критическими точками и собирать названия элементов, которым стоит уделить внимание.
3 вар. Наркоманский. Перед версткой, взять макет, отрисовать все критические блоки в SVG, сопоставлять верстку и SVG по координатам.
ИМХО: 1 вариант самый практичный и дешевый, если нет потока, скажем, в 100 страниц в день.