Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как "достать" все объекты документа (https://javascript.ru/forum/misc/32338-kak-dostat-vse-obekty-dokumenta.html)

Aetae 12.10.2012 14:43

Все - нельзя, есть запретные, но почти все - можно.
Однако:
1. document - адски большой.
2. В document полно саморекурсивных ссылок(firstChild <-> parentNode итд)
3. document и child'ы - не просто объекты - это Node объекты, соответственно если в строку превратить с оговорками(см пункт 2) ещё можно, то обратно уже никак(ну точнее без извращений никак - оно того не стоит).

А так FireBug примерно это и делает при построении модели DOM.

У меня даже где-то валяется древняя наговнокоженная функция сериализации любых объектов.

Maxmaxmахimus 12.10.2012 14:44

Нет ты понимаешь не правильно, DOM это модель документа, которая через javascript доступка как API в виде обьекта document // то что находится в обьекте document это НЕ обычные обьекты javascript.
Элементы DOM просто ПРЕДСТАВЛЕНЫ в виде обьектов javascript и похожи на них, но на самом деле это API к DOM которая находится в движке браузера.

Я думаю Так понятнее?

macdack 12.10.2012 14:54

да, так более понятно спасибо

итак -
JS может полностью сформировать с нуля хтмл-документ любой сложности
при этом JS может использовать JSON-данные для создания узлов документа
соответственно "модель" документа может быть представлена в виде JS-объекта

Maxmaxmахimus 12.10.2012 14:55

да, ты можешь считать данные о DOM через этот API доступ к которому осуществляется через document / Превратить эти данные в любой удобный для тебя формат, а потом используя этот же API (обьект document) наполнить DOM этими данными.

macdack 12.10.2012 15:02

в принципе мне не надо считывать любой документ, то есть парсить его
я размышляю о генерации с нуля хтмл-документа

то есть можно же создавая или удаляя или перемещая с помощью JS узлы, писать все эти изменения в "Json-модель" хтмл-документа


скажите пожалуйста - как в общих чертах происходит в обычных фреймворках редактирование хтмл-документа в браузере - то есть создание новых узлов, так чтобы все нововведения записывались в БД

Maxmaxmахimus 12.10.2012 15:06

var div  = document.createElement('div');
div.className = 'myClass';
div.id = 'myId';

// засунем созданный элемент (через api) в DOM
document.body.appendChild( div ); 

// БАБАХ API метод appendChild добавил в DOM элемент DIV




в jQuery напрмиер так

$('<div>', {className:'myClass', id: 'myId'}).appendTo( 'body' );


или еще проще

$( ' < div class="myClass" id="myId" > ' ).appendTo( 'body' );

Aetae 12.10.2012 15:20

Только чтоб заблуждений не возникло: jquery делает тоже самое, что в первом примере просто внутри себя, для удобства использования.

P.S. Некоторые шаблонизаторы построены на json, в котором содеждится описание нужных элементов.

Maxmaxmахimus 12.10.2012 15:27

кстати да, какая цель то у тебя вообще? ты хочешь придумать какой то формат чтобы присылать сервером данные о РАЗМЕТКЕ а яваскрипт бы наполнял ими DOM ??

macdack 12.10.2012 15:35

о возможном применении я уже написал
подробнее сказать нечего

какбе я грызу этот гранит и хочу глубоко понимать а непросто делать как все ))
ну и сразу же думаю о своем фреймворке

например мне неохота заморачиваться реляционными БД - мне достаточно плоских файлов на ПХП

dmitriymar 12.10.2012 16:00

Цитата:

Сообщение от macdack
правильно ли я понимаю что хтмл-документ это объекты DOM и следовательно объекты JS-программы

откуда такое предположение? dom это не объект языка и JS предоставляет API для доступа к DOM
не глянул что это было уже ранее.
Цитата:

Сообщение от macdack
какбе я грызу этот гранит и хочу глубоко понимать а непросто делать как все ))
ну и сразу же думаю о своем фреймворке

как хватил, может сначала подумать о базовых знания, чем явить миру очередной "шедевр"?


Часовой пояс GMT +3, время: 04:50.