Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.07.2014, 12:20
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

Как получить все элементы?
Допустим, у меня есть файл

<html>
<head></head>
<body></body>
</html>

Больше ничего нет.
Можно ли получить массив, или другую структуру всех html-элементов, которые "потенциально" могут оказаться на странице?

Когда мы делаем
p=document.createElement("p")
у нас записывается в переменную некий HTMLParagraphElement, или что-то в этом роде. Я думаю, что движок хранит где-то этот элемент, также как div, textarea, form и т.д. Как их достать, без создания?

Последний раз редактировалось newobject, 10.07.2014 в 13:38.
Ответить с цитированием
  #2 (permalink)  
Старый 10.07.2014, 12:39
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Открыв консоль ты можешь написать в ней window и увидеть что там много всякого интересного, например функции создания html элементов, я не знаю точно может и хранится где нибудь список нод. Но..зачем??
Ответить с цитированием
  #3 (permalink)  
Старый 10.07.2014, 13:28
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,478

newobject, нельзя.
Но если ты извращенец, то можешь подменить document.createElement на свою функцию.
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 10.07.2014, 13:31
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

Сообщение от Aetae
можешь подменить document.createElement на свою функцию.
А что это даст?
Ответить с цитированием
  #5 (permalink)  
Старый 10.07.2014, 13:49
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,478

document.createElement = function(old){
    function createElement(){       
        return createElement.cache[createElement.cache.length] = old.apply(this, arguments)
    }
    createElement.cache = [];
    return createElement
}(document.createElement)

p=document.createElement("p")
d=document.createElement("div")

alert(document.createElement.cache)
Но во-первых такой ход поломает механизм GC т.к. ссылка на элемент всегда будет, а потому очистки не произойдёт никогда. А во-вторых(следует из первого) неизвестно какие из этих элементов будут использованы, а какие уже устарели.
__________________
29375, 35

Последний раз редактировалось Aetae, 10.07.2014 в 13:52.
Ответить с цитированием
  #6 (permalink)  
Старый 10.07.2014, 14:58
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

Aetae,
Это конечно интересно, но это ничего не решает. Уже созданные элементы можно и так выдернуть, к тому же при таком создании

p=document.createElement("p")
d=document.createElement("div")

они доступны еще и из глобала. А вопрос в том, чтобы иметь доступ к самим объектам, из которых создаются элементы. К примеру, тот же HTMLParagraphElement. Это функция же. вот она должна возвращать этот самый объект. Но если сделать вот так:

window["HTMLParagraphElement"]()

возвращает ошибку NOT_SUPPORTED_ERR

То есть, под капотом именно эта ф-ция возвращает объект параграфа. Вопрос в том, как ее вызвать и получить объект, который она возвращает.

Последний раз редактировалось newobject, 10.07.2014 в 15:02.
Ответить с цитированием
  #7 (permalink)  
Старый 10.07.2014, 22:37
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,478

Это не часть языка js это надстройка(api) со стороны браузера. Ты ничего не сможешь сделать с "HTMLParagraphElement", кроме разве что дополнения прототипа. И совершенно не понимаю ЧТО тебе от него надо.
__________________
29375, 35

Последний раз редактировалось Aetae, 10.07.2014 в 22:40.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по replace. Как заменить все точки в строке? Pluto Общие вопросы Javascript 14 21.04.2017 13:32
Как получить элементы тега div? begunok Общие вопросы Javascript 2 31.12.2012 12:21
Как выбрать из json-массива только не повторяющиеся элементы? Dimaz Общие вопросы Javascript 3 18.12.2012 23:11
Как получить значения вышестоящих элементов дерева TreeStore ? Allan Stark ExtJS 1 31.07.2012 16:48
form, onclick, function...как это все сплести воедино? Berowz Общие вопросы Javascript 0 04.03.2012 14:06