Войти
ФлеймФорумСофт

Границы применимости JavaScript

Страницы: 1 2 37 8 Следующая »
#0
13:18, 4 июня 2017

Насколько я понял, JavaScript (на клиенте) воспринимает все ее окружающее - документ, браузер, интернет - как сложный лес/иерархию деревьев/объектов. Причем, чем очевиднее ненужность объекта, тем больше свойств и методов доступно. А каковы возможности чтения/правки собственно упрятанной в HTML информации? Контейнеров, блоков, текста, картинок...? Каковы мельчайшие атомы, на которые я могу разобрать документ (родной или загружаемый)? И что я могу из него собрать на лету?
Интересуют только родные средства JavaScript, без донавешивания библиотек, баз данных, новых фич HTML5 и прочего...


#1
13:36, 4 июня 2017

gudleifr
> Интересуют только родные средства JavaScript, без донавешивания библиотек,
Ты вообще представляешь что такое библиотеки (языка) и как они делаются?

#2
13:38, 4 июня 2017

9К720
> Ты вообще представляешь что такое библиотеки (языка) и как они делаются?
Да, а что?

#3
14:22, 4 июня 2017

gudleifr
> А каковы возможности чтения/правки собственно упрятанной в HTML информации?
Безграничны.

> Контейнеров, блоков, текста, картинок...?
Безграничны.

> Каковы мельчайшие атомы, на которые я
> могу разобрать документ (родной или загружаемый)?
Биты. Чтобы разобрать дальше, придется подключать вореции, но ты их с нуля, без библиотек, вряд ли напишешь. Это серьезная работа, требующая погружение в дебри жесткого матана и филигранных микрооптимизаций на уровне биос.

#4
14:23, 4 июня 2017

К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>
P.S.: Здесь просто кликаете надпись Click this! и ждёте…

#5
14:44, 4 июня 2017

Alikberov
Спасибо, забыл про "for in".

#6
14:29, 6 июня 2017

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

#7
14:41, 6 июня 2017

Fla
> Прикручиваешь к нему...
Прикручивание не интересует. Условия ни серверной, ни клиентской части от меня не зависят.

Fla
> Читай...
Там описано все, кроме, пожалуй, того что нужно...
Допустим, я могу приказать браузеру вывести gif (откуда-то из сети). Могу я его загрузить, обработать (разобрать, дорисовать, собрать) и только потом вывести? Насколько, вообще, я могу вольно обращаться с данными документов (допустим, вырезать, из него кусок текста и вставить в другой)? Исключая, конечно, те контейнеры/блоки которые самим форматом HTML предназначены для сбора на лету?

#8
15:16, 6 июня 2017

gudleifr
> Могу я
Очевидно, не можешь. Иначе этого треда не было бы.
Прекрати задавать тупые вопросы. Тем более тебе на них уже ответили.
Что хотел то? Сделать что хочешь?

#9
15:29, 6 июня 2017

beejah
> Что хотел то?

gudleifr
> Допустим, я могу приказать браузеру вывести gif (откуда-то из сети). Могу я его
> загрузить, обработать (разобрать, дорисовать, собрать) и только потом вывести?
> Насколько, вообще, я могу вольно обращаться с данными документов (допустим,
> вырезать, из него кусок текста и вставить в другой)? Исключая, конечно, те
> контейнеры/блоки которые самим форматом HTML предназначены для сбора на лету?

#10
15:42, 6 июня 2017

gudleifr
> Прикручивание не интересует.
Ты даже не понял, что тебе написали. Работа с DOM это как раз то, что прикрутили без тебя разработчики браузеров.
Сам по себе язык JavaScript не знает, что такое DOM.
По теме: с помощью JavaScript можно получить доступ ко всем элементам страницы и их свойствам. С помощью  innerHTML и outerHTML можно делать с картинками и прочими кнопками всё, что угодно.

#11
15:46, 6 июня 2017

Gringosol
> С помощью innerHTML и outerHTML можно делать с картинками и прочими кнопками
> всё, что угодно.
Спасибо.

#12
15:54, 6 июня 2017

Gringosol
> Сам по себе язык JavaScript не знает, что такое DOM.
Это ECMAScript. А JavaScript = ECMAScript+DOM+объекты браузера.

#13
16:26, 6 июня 2017

Лол. Крайне интригующий способ узнать, можно ли гонять плайнтекст в DOM и наоборот.

#14
17:09, 6 июня 2017

kipar
> ECMAScript+DOM+объекты браузера.
=ajax

Страницы: 1 2 37 8 Следующая »
ФлеймФорумСофт

Тема в архиве.