Насколько я понял, JavaScript (на клиенте) воспринимает все ее окружающее - документ, браузер, интернет - как сложный лес/иерархию деревьев/объектов. Причем, чем очевиднее ненужность объекта, тем больше свойств и методов доступно. А каковы возможности чтения/правки собственно упрятанной в HTML информации? Контейнеров, блоков, текста, картинок...? Каковы мельчайшие атомы, на которые я могу разобрать документ (родной или загружаемый)? И что я могу из него собрать на лету?
Интересуют только родные средства JavaScript, без донавешивания библиотек, баз данных, новых фич HTML5 и прочего...
gudleifr
> Интересуют только родные средства JavaScript, без донавешивания библиотек,
Ты вообще представляешь что такое библиотеки (языка) и как они делаются?
9К720
> Ты вообще представляешь что такое библиотеки (языка) и как они делаются?
Да, а что?
gudleifr
> А каковы возможности чтения/правки собственно упрятанной в HTML информации?
Безграничны.
> Контейнеров, блоков, текста, картинок...?
Безграничны.
> Каковы мельчайшие атомы, на которые я
> могу разобрать документ (родной или загружаемый)?
Биты. Чтобы разобрать дальше, придется подключать вореции, но ты их с нуля, без библиотек, вряд ли напишешь. Это серьезная работа, требующая погружение в дебри жесткого матана и филигранных микрооптимизаций на уровне биос.
Кaк-то раз, в дремучие времена жутких лимитов Dial-Up и недостатке справочников кроссбраузерных приёмов, написал функцию, которая строит древо всех свойств любого объекта. Запуская в разных браузерах, визуально оценивал различие в наборе свойств. Работает меденно и может ещё медленнее.
<html><head><title>Properties Scanner</title> <script> function Scan(obj, n, r) { var res = ""; if( n > 3) return r + " <-- limited!\n"; try { for( i in obj) { if( String( obj[i]).charAt( 0) == "[") res += Scan( obj[i], n + 1, r + i + "."); else res += r + i + " = " + obj[i] + "\n"; } } catch( e) { window.status = r + i + " -> ERROR AT " + n + " :: " + e; return res + "err\n"; } return res; } </script></head> <body> <img id='im1' dynsrc='C:/Capture/20120907.1745.avi' width=352 height=288 CONTROLS> <pre style='border:thick grey solid' onclick='this.innerText = Scan(document.getElementById("im1"), 0, "")'>Click this!</pre> </body></html>
Alikberov
Спасибо, забыл про "for in".
gudleifr
JavaScript - обычный язык (со своими причудами), он умеет складывать числа, вызывать функции, а еще в нем есть массивы и хеш-таблицы из коробки. Всё. Вот спека ES5, https://www.ecma-international.org/ecma-262/5.1/, ты не найдешь там даже упоминания console.log и setTimeout.
Так вот.
Прикручиваешь к нему биндинги к браузеру (DOM, BOM, CSSOM), получаешь "браузерный" JavaScript и пишешь на нем $.accordeon.
Прикручиваешь к нему биндинги к ОС добру (сокеты, файлы и прочее), получаешь "серверный" JavaScript aka node.js и пишешь на нем все от мелких утилит до веб серверов.
Прикручиваешь к нему биндинги к твоей объектой системе, и пишешь на нем скрипты к своему тетрису.
Прикручиваешь к нему биндинги к GPIO, получаешь ебмед, пишешь на нем постилку в твиттер температуры твоего холодильника.
> Каковы мельчайшие атомы, на которые я могу разобрать документ
Читай https://www.w3.org/DOM/DOMTR
Alikberov
console.dir
Fla
> Прикручиваешь к нему...
Прикручивание не интересует. Условия ни серверной, ни клиентской части от меня не зависят.
Fla
> Читай...
Там описано все, кроме, пожалуй, того что нужно...
Допустим, я могу приказать браузеру вывести gif (откуда-то из сети). Могу я его загрузить, обработать (разобрать, дорисовать, собрать) и только потом вывести? Насколько, вообще, я могу вольно обращаться с данными документов (допустим, вырезать, из него кусок текста и вставить в другой)? Исключая, конечно, те контейнеры/блоки которые самим форматом HTML предназначены для сбора на лету?
gudleifr
> Могу я
Очевидно, не можешь. Иначе этого треда не было бы.
Прекрати задавать тупые вопросы. Тем более тебе на них уже ответили.
Что хотел то? Сделать что хочешь?
beejah
> Что хотел то?
gudleifr
> Допустим, я могу приказать браузеру вывести gif (откуда-то из сети). Могу я его
> загрузить, обработать (разобрать, дорисовать, собрать) и только потом вывести?
> Насколько, вообще, я могу вольно обращаться с данными документов (допустим,
> вырезать, из него кусок текста и вставить в другой)? Исключая, конечно, те
> контейнеры/блоки которые самим форматом HTML предназначены для сбора на лету?
gudleifr
> Прикручивание не интересует.
Ты даже не понял, что тебе написали. Работа с DOM это как раз то, что прикрутили без тебя разработчики браузеров.
Сам по себе язык JavaScript не знает, что такое DOM.
По теме: с помощью JavaScript можно получить доступ ко всем элементам страницы и их свойствам. С помощью innerHTML и outerHTML можно делать с картинками и прочими кнопками всё, что угодно.
Gringosol
> С помощью innerHTML и outerHTML можно делать с картинками и прочими кнопками
> всё, что угодно.
Спасибо.
Gringosol
> Сам по себе язык JavaScript не знает, что такое DOM.
Это ECMAScript. А JavaScript = ECMAScript+DOM+объекты браузера.
Лол. Крайне интригующий способ узнать, можно ли гонять плайнтекст в DOM и наоборот.
kipar
> ECMAScript+DOM+объекты браузера.
=ajax
Тема в архиве.