Как получить все элементы?
Допустим, у меня есть файл
<html> <head></head> <body></body> </html> Больше ничего нет. Можно ли получить массив, или другую структуру всех html-элементов, которые "потенциально" могут оказаться на странице? Когда мы делаем p=document.createElement("p") у нас записывается в переменную некий HTMLParagraphElement, или что-то в этом роде. Я думаю, что движок хранит где-то этот элемент, также как div, textarea, form и т.д. Как их достать, без создания? |
Открыв консоль ты можешь написать в ней window и увидеть что там много всякого интересного, например функции создания html элементов, я не знаю точно может и хранится где нибудь список нод. Но..зачем??
|
newobject, нельзя.
Но если ты извращенец, то можешь подменить document.createElement на свою функцию. |
Цитата:
|
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 т.к. ссылка на элемент всегда будет, а потому очистки не произойдёт никогда. А во-вторых(следует из первого) неизвестно какие из этих элементов будут использованы, а какие уже устарели. |
Aetae,
Это конечно интересно, но это ничего не решает. Уже созданные элементы можно и так выдернуть, к тому же при таком создании p=document.createElement("p") d=document.createElement("div") они доступны еще и из глобала. А вопрос в том, чтобы иметь доступ к самим объектам, из которых создаются элементы. К примеру, тот же HTMLParagraphElement. Это функция же. вот она должна возвращать этот самый объект. Но если сделать вот так: window["HTMLParagraphElement"]() возвращает ошибку NOT_SUPPORTED_ERR То есть, под капотом именно эта ф-ция возвращает объект параграфа. Вопрос в том, как ее вызвать и получить объект, который она возвращает. |
Это не часть языка js это надстройка(api) со стороны браузера. Ты ничего не сможешь сделать с "HTMLParagraphElement", кроме разве что дополнения прототипа. И совершенно не понимаю ЧТО тебе от него надо.
|
Часовой пояс GMT +3, время: 06:17. |