|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Приветствую! Посоветуйте, пожалуйста, как лучше поступить. Есть страница, которая, в общем, вся формуруется сервером как строка. Т.е. добавить в нее, желательно в конец, что-то не проблема. На странице работает аснхронный таймер. Содержимое страницы, видимое в браузере, исправно обновляется без видимой перезагрузки. Есть необходимость передать в браузер от сервера данные так, что бы потом можно было с ними работать в JavaScript. Первое, что пришло в голову, это передача данных через ячейку невидимой таблицы. И через document.querySelector проверять в ней данные. Это, конечно, работает но как-то уж очень криво в целом. Кроме того, это требует добавление в документ довольно сложной структуры. Можно было бы добавить в конец документа описания, например переменных сразу на JS и обновлять их, но думаю, это не сработает без полной перезагрузки страницы. Может, есть вариант добавлять в конец какие-то динамически изменяемые данные в HTML, что бы потом иметь к ним доступ из JS ? Что-то типа <OBJECT> с парами параметр - значение? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 11:00 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Хм. Кажется, сделал. Через атрибуты данных HTML5 и тот же document.querySelector. Сейчас еще проверю, но пока обновляется... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 11:27 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Andi_WEB Есть страница, которая, в общем, вся формуруется сервером как строка. Если ты каждый раз формируешь сервером страницу полностью - данные можно записать как часть скрипта JS Код: javascript 1. 2. 3.
Но если потом страничка (не перегружаясь) получает новые данные - нужно будет менять и data... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 11:51 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
> Но если потом страничка (не перегружаясь) получает новые данные - нужно будет менять и data... Данные, которые в data поменять-то можно. Но "подхватит" ли их интерпретатор JS при неполном обновлении страницы? Что-то у меня пока не получилось ничего по этому пути. Кроме того, появилось подозрение, что даже если это и сработает, мы грубо нарушим оптимизации в вируальной машине при кажом обновлении? Вот это <div id="tcp_cb" data-columns="0,455979254795238" data-columns1="asd"> </div> работает. Может, есть еще методы? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 12:05 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Andi_WEB Хм. Кажется, сделал. Через атрибуты данных Значит ты таки формируешь страницу полностью каждый раз... Или ты динамически меняешь значение связанные с атрибутами? Так можно поступать и с переменными на странице... ДОМ трогать не обязательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 12:10 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Andi_WEB Данные, которые в data поменять-то можно. Но "подхватит" ли их интерпретатор JS при неполном обновлении страницы? Смотря что ты понимаешь под интерпретатор JS... Andi_WEB Вот это Код: html 1.
работает. Проиллюстрирую... Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 12:16 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
> Значит ты таки формируешь страницу полностью каждый раз... Будете смеятся - но трудно сказать. Я WEB в общем не занимаюсь, в основном железками. У системы есть ядро, которое использует в т.ч. AJAX. На странице таймер и элемент TEXT, в который попадает весь код страницы на HTML. Работу этого сервера я себе представлял примерно так - таймер, используя механизм AJAX получает с сервера только "видимое" представление страницы, а JS часть загружается только при первом обращении к странице, и не интерпретируется заново при обновлениях. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 12:18 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Andi_WEB Может, есть еще методы? JS может еще получить данные из УРЛа... Но далее, если они обновляются без изменения УРЛ, нужно будет самостоятельно отслеживать их изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 12:18 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Andi_WEB используя механизм AJAX получает с сервера ... Это уже динамическое изменение... При таком варианте - передать начальные данные можно и статикой. Не в атрибутах, прямо в скрипте. Когда будешь получать данные подгрузкой (механизм AJAX) находи там нужное и меняй значение переменным (у меня это data). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 12:21 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
А если я просто в конец страницы добавляю по типу Код: javascript 1.
с нужними данными, это грозит чем-то нехорошим, как думаете? Проверил, вот так: Код: javascript 1.
все вроде извлекается и отображаются текущие данные. Т.е. отсюда я заключил, что можно дописать их обработку в скрипт и работать с ними. Правда, проверял-то я это пока в консоли. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 12:25 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Andi_WEB А если я просто в конец страницы добавляю по типу Код: javascript 1.
с нужними данными, это грозит чем-то нехорошим, как думаете? Проверил, вот так: Код: javascript 1.
все вроде извлекается и отображаются текущие данные. Нехорошего не будет точно. Просто данные с сервера и не более того. Главное чтобы они были видны в нужный тебе момент. А далее остается только их модифицировать при получении свежей партии данных с сервера... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 12:40 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Да, прошу прощения, только сейчас понял, что сразу не совсем ясно задал вопрос. С самого начала речь шла об обновляемых данных, коннчно. Измеряемое значение. Сейчас попробую внедрить обработку в страницу, а не проверять с консоли. Интересно также, будет ли рботать, если при следующем обновлении страницы, скажем, станет не два элемента dataset ( columns и columns1 ), а появится еще columns2... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 12:44 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Andi_WEB Интересно также, будет ли рботать, если при следующем обновлении страницы, скажем, станет не два элемента dataset ( columns и columns1 ), а появится еще columns2... Какие данные передашь - такие и получишь при "обработке". А пробовал передавать денные именно в скрипте, в переменных JS? Если это все нужно для скрипта, что будет "крутиться" на странице - не стоит так "далеко" прятать данные... Вот некая иллюстрация... Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 12:58 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
> А пробовал передавать денные именно в скрипте, в переменных JS? Пробовал первым делом, не заработало. Потому сделал сначала с таблицей. Правда, это было вчера и очень поздно, вероятен мощный затуп :-) Сегодня еще попробую несколько вариантов. Спасибо за советы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 13:04 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Andi_WEB ... Есть необходимость передать в браузер от сервера данные так, что бы потом можно было с ними работать в JavaScript. Первое, что пришло в голову, это передача данных через ячейку невидимой таблицы. И через document.querySelector проверять в ней данные. Это, конечно, работает но как-то уж очень криво в целом. Кроме того, это требует добавление в документ довольно сложной структуры. Можно было бы добавить в конец документа описания, например переменных сразу на JS и обновлять их, но думаю, это не сработает без полной перезагрузки страницы. Может, есть вариант добавлять в конец какие-то динамически изменяемые данные в HTML, что бы потом иметь к ним доступ из JS ? Что-то типа <OBJECT> с парами параметр - значение? Объявляешь внутри тега script переменную в javascript (в своей странице) и ей можно присваивать значение и с ним потом работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 13:08 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
> Объявляешь внутри тега script переменную в javascript (в своей странице) и ей можно присваивать значение и с ним потом работать. Да, в случае статики это наверное было бы выходом. Но, во-первых, у меня это почему-то пока вообще не заработало. Переменная Undefined и все тут. А у меня ведь эта переменная (или переменные) будут обновлятся несколько раз в секунду. Не сойдет ли с ума интерпретатор JS в браузере? Пока склоняюсь к мысли, что "корежить" понемногу DOM более безопасно, а через атрибуты данных HTML5 наверное так и вообще самое оно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 13:46 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Andi_WEB А у меня ведь эта переменная (или переменные) будут обновлятся несколько раз в секунду. Не сойдет ли с ума интерпретатор JS в браузере? Нет, не переживай за это... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 13:58 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
del ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 14:17 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Andi_WEB Интересно также, будет ли работать, если при следующем обновлении страницы, скажем, станет не два элемента dataset ( columns и columns1 ), а появится еще и columns2... Проверил - работает. Как на увеличение, так и в сторону уменьшения числа элементов datadset. Т.е. это довольно удобно в моем случае, можно динамически изменять не только сами переменные, но и их колличестсво. Не нужно в данном случае городить что-то вроде сериализации, JSON строки например, а можно работать с парами параметр - значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 15:20 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Andi_WEB Не нужно в данном случае городить что-то вроде сериализации, JSON строки например, а можно работать с парами параметр - значение. Я выше показал тебе альтернативу с объектом JS... ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 15:35 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Andi_WEB Не сойдет ли с ума интерпретатор JS в браузере? Andi_WEB Есть страница, которая, в общем, вся формуруется сервером как строка. Andi_WEB Первое, что пришло в голову, это передача данных через ячейку невидимой таблицы. Andi_WEB Через атрибуты данных HTML5 Andi_WEB при неполном обновлении страницы? Andi_WEB Работу этого сервера я себе представлял примерно так - таймер, используя механизм AJAX получает с сервера только "видимое" представление страницы, кто мешает загрузить страницу один раз, а далее загружать по ajax только данные в той или иной форме? получили данные обработали, отобразили в нужном вид. и не надо обновлять всю страницу. обновляется только сам объект отображения - таблица, график...для сервера меньше работы как вариант - объект отображения - тоже строка - можно формировать на сервере, передавать в браузер в виде готовой html-строки и просто вставлять в dom. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 18:26 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Так... переменные передаются. Теперь настало время сделать что бы можно было отлавливать их изменение. Но не делать же это по таймеру! Погуглив, пришел к вот такой вот конструкции: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
Но пришел не сразу, а постепенно. Все попытки запустить этот механизм без вспомогательный функций оканчивались ошибкой - "Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'Node'." Как будто что-то не проинициализированно (несмотря ня запуск после DOMContentLoaded), но что? Изучать JS конечно надо, будем стараться. Но все же - как можно отрефакторить этот кусок кода? Думаю, тут дело не в положительном влиянии задержки, что-то неверно в общем. И можно ли как-то автоматически отследить, какая именно переменная была изменена? Процедурно это конечно сделать несложно, но может есть более изящное решение? Вот оно, хранилище данных: <div id="tcp_cb" data-columns="127" data-columns1="128" data-columns2="129"> </div> ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 22:07 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Да, вот это конечно лишнее: Dataset_Values.dispatchEvent(event); А var Dataset_Values лучше вынести из функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 22:23 |
|
Посоветуйте как передать данные в обновляемую страницу HTML
|
|||
---|---|---|---|
#18+
Andi_WEB, у тебя данные приходят по ajax? что значит переменные передаются? откуда передаются? каким образом передаются? зачем такие сложности? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 06:46 |
|
|
start [/forum/topic.php?fid=22&fpage=2&tid=1443176]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
others: | 250ms |
total: | 411ms |
0 / 0 |