-
- В общем, всем спасибо. Примочка испытана в боевых условиях, всех все устраивает. Я правда пыжился - затачивал под телефоны и планшеты с WiFi, а оказалось надо только для компов в сетке. Некий "терминал для 1С", чтобы эту 1С не ставить на все компы... - Гyдвин(23.04.2020 17:58)
- Ну чО, макет в принципе готов. EXE-шник наДельфЯх в качестве web
сервера размером 450 кб, внутрях Memo c HTML и скриптами 4.5 кб. И,
собственно, XML с таблицей, которая изменяется (выгрузка из 1С) и
обновляется каждые 30 сек на клиентах. Тестировал одновременно
телефоном и планшетом на Андроиде, iPad, и тройкой окон браузера на
компе. Все пучком - дисплеи автоматом масштабируются, события от
кнопок передаются в 1С, все плавненько - никакой дерготни. Вот так
примерно Гyдвин(19 знак., 19.04.2020 02:37 - 02:44, ссылка)
- Если в элемент можно кликнуть мышкой, то приличные люди для этого
элемента курсор заменяют на палец (поинтер). А то фиг догадаешься. - fk0(19.04.2020 11:47, ссылка)
- А смысл? Это предназначено в первую очередь для планшетов, там
натуральный палец по всей таблице ;) А кнопок всего пара - не
дебилы же, без "пальца" допрут... О другом задумался - о
минимизации трафика и времени отклика. Типа, посылать XML только
тогда файл реально изменился, а запросы слать чаще - проверять
состояние короткими пакетами. - Гyдвин(19.04.2020 12:37)
- Тут уже вспоминали про websocket. Он позволяет не рвать соединение
и пулять инфу с сервера асинхронно. - SciFi(19.04.2020 12:48)
- Опять же зависит от мобильных клиентов, которые могут и не поддерживать эту фишку. А XMLHttpRequest работает на всем - можно обмениваться строками с парой символов. И как раз рвет соединение (в случае с WiFi, имхо, надежнее). И тайм-аут запроса можно настраивать, и цепочка маршрутизаторов поддерживается в тонусе... - Гyдвин(19.04.2020 13:02)
- Для этого именно веб-сокеты -- не нужны. Для этого нужна дополнительная логика в аппликейшн-сервере, чего у Гудвина нет. А сделать можно и поллингом -- это, как раз, не слишком принципиально. - fk0(19.04.2020 12:57)
- Тебе надо не запрещать кеширование, добавить "Cache-Control: must-revalidate". Тогда браузер при обновлении будет делать HEAD-запрос и проверять дату/время (Last-Modified заголовок) файла. И если оно новее, чем в кеше -- запрашивать уже файл. И естесственно твоя Delphi-программа должна давать разумные дату-время и при повторном запросе если изменений нет давать то же самое время, а если данные есть -- двигать время вперёд. fk0(15 знак., 19.04.2020 12:38, ссылка)
- Тут уже вспоминали про websocket. Он позволяет не рвать соединение
и пулять инфу с сервера асинхронно. - SciFi(19.04.2020 12:48)
- Средний ? :-) - OlegPowerC(19.04.2020 12:32)
- А смысл? Это предназначено в первую очередь для планшетов, там
натуральный палец по всей таблице ;) А кнопок всего пара - не
дебилы же, без "пальца" допрут... О другом задумался - о
минимизации трафика и времени отклика. Типа, посылать XML только
тогда файл реально изменился, а запросы слать чаще - проверять
состояние короткими пакетами. - Гyдвин(19.04.2020 12:37)
- Яйцо слопано, пара рюмочек коньячка опрокинута. С праздником! ;) - Гyдвин(19.04.2020 02:43)
- Если в элемент можно кликнуть мышкой, то приличные люди для этого
элемента курсор заменяют на палец (поинтер). А то фиг догадаешься. - fk0(19.04.2020 11:47, ссылка)
- А зачем js? Когда-то давно пришлось работать с одноЙ CMS, она
возвращала элементы страницы в виде xml, html разметка получалась
уже разработчиком сайта посредством xslt. Немного головоломно по
первости, но потом втягиваешься. - BlackPrapor(16.04.2020 15:10)
- AJAX, события на дельфийный сервер и минимальный размер кода без кучи файлов (все в одном *.exe) - я ленивый :) Просто нечасто приходится сталкиваться с такими делами. Последний раз в 2008 году аналогичную штуку изображал. Работает прекрасно до сих пор, кстати. Но там не было таблиц - статические страницы с полями и кнопками, посему и хромаю, ибо нуб в www ;) - Гyдвин(16.04.2020 15:18)
- Зачем тебе XML? Данные в javascript проще переносить в виде JSON. В
который можно трансформировать на хосте чем-то вроде xsltproc.
Делать это руками на javascript несколько неудобно. И если всё-таки
приходится, то опять же идея отдельно написать функцию
трансформации в JSON и отдельно функцию шаблонизации, заполняющую
предоставленный шаблон HTML-таблицы данными из JSON -- не самая
глупая идея. fk0(4192 знак., 16.04.2020 12:50)
- >ты зачем-то руками генерируешь HTML lloyd(99 знак., 16.04.2020 13:06, картинка)
- Как работает современный веб мы видим -- страницы по 20МБайт,
браузер занимающий 4ГБайт, и ждать пока загрузится как во времена
модемов на 9600. И когда открываем javascript-консоль миллион
ошибок и всем пофиг. И перманентные глюки. Повторюсь, я смотрю с
точки зрения программиста. - fk0(16.04.2020 13:08)
- Зато можно сделать радость красноглазика - Schema-driven UI! Раньше
таким мог похвастаться только Tcl/Tk, а теперь можно сделать
веб-уинтерфейс чисто на базе схемы БД. - lloyd(16.04.2020 13:10)
- Ну это как спор между ЯВУ с динамической типизацией и статической.
Первые быстро стартуют, но не далеко летают, с ростом сложности всё
разваливается. Также и тут. Вермишель из кода ничем хорошим не
кончается, теряется управляемость за процессом. Но и тут есть
ньансы: fk0(1947 знак., 16.04.2020 13:26)
- Вообще lloyd наталкивает на интересные мысли. Условный макропроцессор можно сделать комбинировав пункты 1 и 2. Т.е. мы пишем шаблон в html как есть, но в нём вставляются специальные элементы или атрибуты. Потом шаблон трансформируется и вставляется в страницу. В процессе трансформации для специальных элементов или атрибутов вызываются функции, которые осуществляют подстановку данных (каких -- указано в атрибутах или тексте элементов). Для элементов -- они подменяются на fk0(635 знак., 16.04.2020 13:47)
- >Тот же гудвиновский код можно переписать так, чтоб он
генерировал сразу нужные элементы с нужными свойствами и добавлял в
конструируемое поддерево lloyd(215 знак., 16.04.2020 13:45)
- Ты сам понимаешь, что парсинг строки тоже тянет за собой объектную
генерацию DOM ? Т.е. медленей оно быть не может. Там проблема
скорей в другом: при генерации DOM руками у тебя браузер на каждый
чих пересчитывает CSS и перерисовывает страницу. А при парсинге он
перерисовку до конца парсинга не делает. Есть разные трюки,
во-первых дерево можно сконструировать от корня изначально не
привязанного к странице, а потом одним махом вставить (если
вставлять в "живую страницу", fk0(409 знак., 16.04.2020 13:53)
- Гудвин всё правильно сделал :). Он же не проект динамической
страницы целью ставил, а токмо малую HTML-вставочку хотел сделать,
а потому и упор на HTML был сделан им совершенно верно. Тогда как
JS у него лишь из-за суровой необходимости парсить XML (чтобы не
делать этого вручную), ну и еще в одном месте неизбежная операция
вставки. Было бы излишеством с его стороны городить для этой цели
целый проект с js- и css-файлами, а тем паче связываться с мерзким
AJAX'ом. :) - Kceния(16.04.2020 15:47)
- Для тех, у кого брезгливое отношение к жабаскрипту - придумали
XSLT. lloyd(305 знак., 16.04.2020 15:58)
- Что значит но-брейнер? Почему-то какой-то конкретный фреймворк который это делает -- ок, а если сам руками сделал, то не ок. А почему не наоборот? - fk0(16.04.2020 18:46)
- К JS у меня очень хорошее отношение, а плохое только к AJAX. Вот
если бы все AJAX-функции откомпилировали в бинарник и встроили в
браузер, то было бы другое дело. - Kceния(16.04.2020 16:14)
- Вы никогда ничего сложнее одной таблички в вебе не рисовали, да?
XMLHttpRequest в своей работе обычно даже не замечают, 99% работы
совсем не в передаче запросов - lloyd(16.04.2020 16:19)
- Я с XML прежде не работала, но в вебе много чего делала. Например,
интерактивную карту, реагирующую на положение мыши и ее клики. В
последнем случае почти всё на JS пришлось ваять (но без AJAX). - Kceния(16.04.2020 16:37)
- Значит так, AJAX не нужен, это пережиток прошлого, нужно событие от
сервера - есть WebSocket. А если это г под названием JS не хочется
трогать - есть TypeScript, а если совсем ничего не хочется - есть
WebAsm - пиши на всем что потом в web assembly скомпилится , и да
если сейчас что-то с Web UI делать, то придётся изучать Vue
JS/Angular/React/Polymer - OlegPowerC(19.04.2020 12:11)
- AJAX не пережиток, а зло, порожденное войной браузеров, - попытка создать браузеро-независимую прослойку, поверх которой можно было бы писать JS код, не вникая с особенности реализации DOM на каждом из них. Kceния(136 знак., 19.04.2020 14:22)
- А что, на голом JS делать кто-то запрещает, обязательно Angular
нужен? - fk0(19.04.2020 12:40)
- Нет пожалуйста я тоько за, но много компонентов есть готовые в том же Вуе и он простоя достаточно - OlegPowerC(19.04.2020 13:10)
- Значит так, AJAX не нужен, это пережиток прошлого, нужно событие от
сервера - есть WebSocket. А если это г под названием JS не хочется
трогать - есть TypeScript, а если совсем ничего не хочется - есть
WebAsm - пиши на всем что потом в web assembly скомпилится , и да
если сейчас что-то с Web UI делать, то придётся изучать Vue
JS/Angular/React/Polymer - OlegPowerC(19.04.2020 12:11)
- Я с XML прежде не работала, но в вебе много чего делала. Например,
интерактивную карту, реагирующую на положение мыши и ее клики. В
последнем случае почти всё на JS пришлось ваять (но без AJAX). - Kceния(16.04.2020 16:37)
- Вы никогда ничего сложнее одной таблички в вебе не рисовали, да?
XMLHttpRequest в своей работе обычно даже не замечают, 99% работы
совсем не в передаче запросов - lloyd(16.04.2020 16:19)
- Ну JS еще для AJAX и событий... Да и парсить как раз не приходится
- встроенные в браузер библиотеки шустро выбирают нужные поля из
XML. В общем строчек 200 в index.html - аккурат для дельфийного
"Memo" в EXE-шнике ;) - Гyдвин(16.04.2020 15:52)
- Так вы из-под AJAX это писали? - Kceния(16.04.2020 16:15)
- Не пойму. что значит "из-под AJAX". C моей точки зрения (исходя из
скудоумия?) это обычный асинхронный запрос из JS к HTTP серверу, в
котором с помощью "GET" можно пульнуть и принять данные. Сегодня
правда и наткнулся на xmlhttp.overrideMimeType('application/xml');
, иначе XML файл принимался некорректно :) Вот весь AJAX: Гyдвин(785 знак., 16.04.2020 17:36)
- Дрючить сервер раз в 10 секунд очень дурная идея, особенно когда
клиентов может быть очень много и таблицы большие. Возможно проще
не рвать соединение и досылать обновления. Для этого есть chunked
transfer encoding, server sent events и websockets как
универсальный способ сделать всё. - fk0(16.04.2020 19:00)
- Отписался ниже по этому поводу. Клиентов с десяток, локальная
сетка, XML 10..30 кб. А вот и кусочек наброска "сервера", етить,
который предназначен только для этой задачи. Html со стилями и
скриптами вообще грузится из Memo, ибо пара сотен строк текста. Все
это летает со свистом... Ардуинщики они такие - Апачи с IIS-ами им
влом ставить - в деревнях их просто некому сопровождать. И оно еще
и работает ;) Гyдвин(723 знак., 16.04.2020 19:21)
- А вобще круто что Делфи не бросаешь, респект. - OlegPowerC(19.04.2020 12:14)
- Мало того, подумывал воткнуть "сервер" в какой-нить роутер - принимать XML от 1С и рассовывать десятку клиентов и его хватит за глаза... Только лень красноглазить, да и дельфийный - уже испытанное временем решение. - Гyдвин(16.04.2020 20:07)
- Отписался ниже по этому поводу. Клиентов с десяток, локальная
сетка, XML 10..30 кб. А вот и кусочек наброска "сервера", етить,
который предназначен только для этой задачи. Html со стилями и
скриптами вообще грузится из Memo, ибо пара сотен строк текста. Все
это летает со свистом... Ардуинщики они такие - Апачи с IIS-ами им
влом ставить - в деревнях их просто некому сопровождать. И оно еще
и работает ;) Гyдвин(723 знак., 16.04.2020 19:21)
- А зачем тебе вообще нужен асинхронный запрос? Потому, что как часто
бывают с ардуинщиками -- они услышали что-то одно, зацепились, а
темой не владеют и другого ничего слышать уже не хотят. И делают
какие-то странные вещи. Асинхронный запрос нужен веб-аппликации, когда оно живет условно независимо от
сети и запросов, и может в процессе загрузки что-то ещё делать.
Если у тебя всё равно и html с сервера загружается каждый раз, то
зачем там асинхронщина -- не понятно. fk0(591 знак., 16.04.2020 18:39, ссылка)
- html с сервера загружается один раз!. А вот табличка обновляется периодически из XML файла с сервера,
чтобы не было дерготни в браузере. Ну и нажатия кнопок (а они тоже
имеются) для отправки событий - асинхронные запросы. Так что ве по
правилам "веб-аппликации"(c)... - Гyдвин(16.04.2020 19:00)
- В HTML есть такая штука: meta refresh. И у тебя страничка начинает
сама перезагружаться! А дерготня по любому будет, если сечас в
табличке 5 строк и одной ширины/высоты, а через секунду 20 строк, а
потом опять 5 строк и так далее. Ну можно конечно для внешнего
контейнера размеры прибить гвоздями к окну, тогда дерготня будет
только внутри него. А ещё фреймы есть, вот. Да, я знаю, мне 1000
лет я выполз из тьмы. Табличку сажаешь во внутренний фрейм, где она
через meta fk0(133 знак., 16.04.2020 19:08)
- "Не стреляйте в пианиста, он играет, как умеет"(с) За идеи спасибо ;) Может быть, когда нибудь, в следующей реинкарнации... Ширину колонок таблицы, кстати, зафиксировал в секции стилей, да и колонок всего 3 - только самое необходимое, чтобы даже в телефонах правильно отображалось. А по вертикали оно нехай меняется - для того и обновляется, и отсортировано еще в базе 1С в соответствии с приоритетами. Ну и при тапе в строке таблицы, средствами JS выводится окно с Гyдвин(110 знак., 16.04.2020 19:52)
- В HTML есть такая штука: meta refresh. И у тебя страничка начинает
сама перезагружаться! А дерготня по любому будет, если сечас в
табличке 5 строк и одной ширины/высоты, а через секунду 20 строк, а
потом опять 5 строк и так далее. Ну можно конечно для внешнего
контейнера размеры прибить гвоздями к окну, тогда дерготня будет
только внутри него. А ещё фреймы есть, вот. Да, я знаю, мне 1000
лет я выполз из тьмы. Табличку сажаешь во внутренний фрейм, где она
через meta fk0(133 знак., 16.04.2020 19:08)
- html с сервера загружается один раз!. А вот табличка обновляется периодически из XML файла с сервера,
чтобы не было дерготни в браузере. Ну и нажатия кнопок (а они тоже
имеются) для отправки событий - асинхронные запросы. Так что ве по
правилам "веб-аппликации"(c)... - Гyдвин(16.04.2020 19:00)
- Как внизу написано - лучше не делать. А что если у вас по
каким-либо причинам обработка действия займет больше 10 секунд?
Тогда эти таски застопорят страницу и переполнят очередь. lloyd(59 знак., 16.04.2020 17:38)
- Спасибо! Так и изображу. Как раз задумывался, как блокировать таймер при выводе в окно полей записи для просмотра. Скудоумие и отвага ;) Тут все-таки передача файла 10..30 килобайт, отрисовка таблицы практически мгновенная и на iPad, и на Android, и на компе - тестю. Хотя по многолетнему опыту эксплуатации в локалке затыков не неблюдалось. Там с интервалом 0.5 сек запрашивается информация о показаниях и статусе 8 автомобильных весов + команды управления с Гyдвин(133 знак., 16.04.2020 18:10)
- Дрючить сервер раз в 10 секунд очень дурная идея, особенно когда
клиентов может быть очень много и таблицы большие. Возможно проще
не рвать соединение и досылать обновления. Для этого есть chunked
transfer encoding, server sent events и websockets как
универсальный способ сделать всё. - fk0(16.04.2020 19:00)
- Не пойму. что значит "из-под AJAX". C моей точки зрения (исходя из
скудоумия?) это обычный асинхронный запрос из JS к HTTP серверу, в
котором с помощью "GET" можно пульнуть и принять данные. Сегодня
правда и наткнулся на xmlhttp.overrideMimeType('application/xml');
, иначе XML файл принимался некорректно :) Вот весь AJAX: Гyдвин(785 знак., 16.04.2020 17:36)
- Так вы из-под AJAX это писали? - Kceния(16.04.2020 16:15)
- Для тех, у кого брезгливое отношение к жабаскрипту - придумали
XSLT. lloyd(305 знак., 16.04.2020 15:58)
- Гудвин всё правильно сделал :). Он же не проект динамической
страницы целью ставил, а токмо малую HTML-вставочку хотел сделать,
а потому и упор на HTML был сделан им совершенно верно. Тогда как
JS у него лишь из-за суровой необходимости парсить XML (чтобы не
делать этого вручную), ну и еще в одном месте неизбежная операция
вставки. Было бы излишеством с его стороны городить для этой цели
целый проект с js- и css-файлами, а тем паче связываться с мерзким
AJAX'ом. :) - Kceния(16.04.2020 15:47)
- Ты сам понимаешь, что парсинг строки тоже тянет за собой объектную
генерацию DOM ? Т.е. медленей оно быть не может. Там проблема
скорей в другом: при генерации DOM руками у тебя браузер на каждый
чих пересчитывает CSS и перерисовывает страницу. А при парсинге он
перерисовку до конца парсинга не делает. Есть разные трюки,
во-первых дерево можно сконструировать от корня изначально не
привязанного к странице, а потом одним махом вставить (если
вставлять в "живую страницу", fk0(409 знак., 16.04.2020 13:53)
- Ну это как спор между ЯВУ с динамической типизацией и статической.
Первые быстро стартуют, но не далеко летают, с ростом сложности всё
разваливается. Также и тут. Вермишель из кода ничем хорошим не
кончается, теряется управляемость за процессом. Но и тут есть
ньансы: fk0(1947 знак., 16.04.2020 13:26)
- Зато можно сделать радость красноглазика - Schema-driven UI! Раньше
таким мог похвастаться только Tcl/Tk, а теперь можно сделать
веб-уинтерфейс чисто на базе схемы БД. - lloyd(16.04.2020 13:10)
- Как работает современный веб мы видим -- страницы по 20МБайт,
браузер занимающий 4ГБайт, и ждать пока загрузится как во времена
модемов на 9600. И когда открываем javascript-консоль миллион
ошибок и всем пофиг. И перманентные глюки. Повторюсь, я смотрю с
точки зрения программиста. - fk0(16.04.2020 13:08)
- >ты зачем-то руками генерируешь HTML lloyd(99 знак., 16.04.2020 13:06, картинка)
- Всем спасибо! Помогли... - Гyдвин(16.04.2020 12:17)
- Ну и как оно получилось? - Kceния(16.04.2020 12:20)
- Получилось. Вот файлик... Гyдвин(16.04.2020 12:26, ссылка)
- А onclick у вас работает? А то странно мне, что style не сработал. - Kceния(16.04.2020 16:12 - 17:10)
- Не нужно устраивать PHP и мешать вермишель из перекрученных между
собой стилей, javascript-кода и логической организации (HTML). Это
три разные сущности. Люди годами бились, чтоб их разделить в GUI,
изобретали методологию Model-View-Controller, а PHP-уеб-дизайнеры
пришли и всё испортили. fk0(1420 знак., 16.04.2020 13:07)
- "Моя твоя не понимай" :) Я не вэб десигнер, и сервер у меня вообще
на ДельфЯх, и во всем надо знать меру :) XML - это готовая выгрузка
из базы 1С, которую надо прикрутить к телефонам и планшетам по
внутренней сетке . Кстати, этот XML практически не отличается ни по
структуре, ни по размеру от JSON. Плодить кучу JS файлов и пр.
дребедени на каждый чих не комильфо. Посему выбираю только
необходимые данные и динамически строю таблицу. Всего пара файликов
- index.html и Гyдвин(400 знак., 16.04.2020 14:08)
- Ну я ж вначале и рассказал как динамически строить таблицу. Только
из шаблона, а на по байтикам вручную. Чтоб можно было поменять
структуру и вид таблицы без изменения кода. Юзеров отличать, самое
надёжное -- сертификатом. Клиенты охереют от сложности и ты тоже.
Можно паролем. Но проблема пароля в том, что его можно подсмотреть
и скопировать. Сам файл сертификата тоже. А я догадываюсь, что тебе
размножение абонентов совершенно не нужно. У тебя на первом месте
не fk0(4547 знак., 16.04.2020 14:46)
- В моем случае таких
ужастейсложностей не требуется - оно предназначено только для локальной сетки c WiFi - некие мобильные терминалы на складах. Как уже сказал, пока склоняюсь в девайсах прописать статические адреса, а на сервере можно просто отфильтровать "чужих", если таковые вдруг появятся. Ну и ограничение количества клиентских соединений на сервере до-кучи поднастроить... - Гyдвин(16.04.2020 15:08)- Ну сделай так: вводится мастер-пароль и выбирается кому назначен данный планшет. Тогда ставится кука для идентификации. В отличии от жесткой привязки адресов нет гемора выдать другой планшет вместо сломанного. Конечно юзеры могут меняться куками, но они же просто и планшетами поменяться могут. Без специального ректального зонда и татуировки QR-кодом это и не решить. - fk0(16.04.2020 19:03)
- В моем случае таких
- >Если ты крут, лучше подскажи как можно идентифицировать
клиентов на сервере lloyd(23 знак., 16.04.2020 14:41)
- С куками как то некузяво. По-сути нужно выдать "Ивановой" девайс с
ID XXXXX и прописать его в базу на постоянно. - Гyдвин(16.04.2020 15:11)
- Так а причем тут js и девайс? жабаскрипт для клиентских браузеров и
отсутствие жесткой привязки к конкретному компьютеру это как бе
ожидаемо - lloyd(16.04.2020 15:13)
- Ну да... А привязать-таки надо ;) Ибо пока хотелки: "Хотим видеть
движуху в локалке на планшетах с браузером. Чтобы все видели и,
кому положено, делали отметки". Но опыт подсказывает, что потом
захотят увидеть, что отметила именно "Иванова", потом чтобы
информация выводилась только та, которая предназначена "Ивановой с
первого склада". А потом возможно захотят и в WWW это дело
вкорячить (хотя это как раз маловероятно).... - Гyдвин(16.04.2020 15:34)
- Ну дык делаете авторизацию и фильтруете запросы по кукам. И на
стороне бэкенда уже знаете, с Ивановой или Сидоровой вы работаете - lloyd(16.04.2020 16:22)
- Уже изобразил в дельфях - получаю IP адрес клиента из запросов XMLHttpRequest. Пусть так и будет - вполне устраивает... Там же генерю внешнее асинхронное событие для 1С с полями (уникальный ID записи, код события, IP адрес клиента) из того же XMLHttpRequest. 1С-ник это дело парсит, правит нужное в базе и экспортирует в XML. Клиенты периодически обновляют XML с сервера. Клиенты ничего не пишут в этот XML на сервере, 1С-ник не парсит. Никаких блокировок в сервере не Гyдвин(79 знак., 16.04.2020 16:57)
- Я бы лучше накропал приблудок для Андроида, но хотят браузер, стервецы. Ну и с Андроилами, начиная с 6 версии, разрастается аналогичная жопа - ни чихнуть, ни пернуть без присмотра корпорации добра... - Гyдвин(16.04.2020 15:39)
- Ну дык делаете авторизацию и фильтруете запросы по кукам. И на
стороне бэкенда уже знаете, с Ивановой или Сидоровой вы работаете - lloyd(16.04.2020 16:22)
- Ну да... А привязать-таки надо ;) Ибо пока хотелки: "Хотим видеть
движуху в локалке на планшетах с браузером. Чтобы все видели и,
кому положено, делали отметки". Но опыт подсказывает, что потом
захотят увидеть, что отметила именно "Иванова", потом чтобы
информация выводилась только та, которая предназначена "Ивановой с
первого склада". А потом возможно захотят и в WWW это дело
вкорячить (хотя это как раз маловероятно).... - Гyдвин(16.04.2020 15:34)
- Так а причем тут js и девайс? жабаскрипт для клиентских браузеров и
отсутствие жесткой привязки к конкретному компьютеру это как бе
ожидаемо - lloyd(16.04.2020 15:13)
- С куками как то некузяво. По-сути нужно выдать "Ивановой" девайс с
ID XXXXX и прописать его в базу на постоянно. - Гyдвин(16.04.2020 15:11)
- Ну я ж вначале и рассказал как динамически строить таблицу. Только
из шаблона, а на по байтикам вручную. Чтоб можно было поменять
структуру и вид таблицы без изменения кода. Юзеров отличать, самое
надёжное -- сертификатом. Клиенты охереют от сложности и ты тоже.
Можно паролем. Но проблема пароля в том, что его можно подсмотреть
и скопировать. Сам файл сертификата тоже. А я догадываюсь, что тебе
размножение абонентов совершенно не нужно. У тебя на первом месте
не fk0(4547 знак., 16.04.2020 14:46)
- "Моя твоя не понимай" :) Я не вэб десигнер, и сервер у меня вообще
на ДельфЯх, и во всем надо знать меру :) XML - это готовая выгрузка
из базы 1С, которую надо прикрутить к телефонам и планшетам по
внутренней сетке . Кстати, этот XML практически не отличается ни по
структуре, ни по размеру от JSON. Плодить кучу JS файлов и пр.
дребедени на каждый чих не комильфо. Посему выбираю только
необходимые данные и динамически строю таблицу. Всего пара файликов
- index.html и Гyдвин(400 знак., 16.04.2020 14:08)
- Получилось. Вот файлик... Гyдвин(16.04.2020 12:26, ссылка)
- Ну и как оно получилось? - Kceния(16.04.2020 12:20)
- Добавить, там же, где onclick, еще фразу Kceния(157 знак., 16.04.2020 11:39)
- Пробовал так - не работает. А вот второй вариант дышит, спасибо. - Гyдвин(16.04.2020 11:43 - 12:01)
- Попробуйте тогда заменить innerHTML на outerHTML, т.к. первый стили игнорирует. Kceния(38 знак., 16.04.2020 12:00, ссылка)
- Пробовал так - не работает. А вот второй вариант дышит, спасибо. - Гyдвин(16.04.2020 11:43 - 12:01)
- тут - General(16.04.2020 11:21, ссылка)
- Млять "Код" все тэги съел. Не годится такой "Код" :) Приложил *.zip
с этой функцией... Гyдвин(16.04.2020 11:04, ссылка)
- Там, где надо в tr вставляем BGCOLOR="#Value" ir0407(70 знак., 16.04.2020 11:21)