Страницы: 1
Хмм..
Глянул в HEX, js3250.dll - увидел слово XML, собсно всплывает вопрос, какие у JS есть функции для работы с XML?
Не, я уже изобрел и покруче, конечно метод идиотский, но в результате - кроссбраузерность и выводится несколько больше объектов.
Ня вот, посмотришь:
[code]<html>
<head><title>List of all functions</title></head>
<body></body>
</html>
<script type="text/javascript">
<!-- //
var res="";
function getProps(mas){
var a,prop,val;
if(mas.match(/^(document.scripts.\d+)|(document.body.all)|(document.childNodes.\d+)|(document.body.childNodes.\d+)|(document.all.\d+)|(document.firstChild)|(document.lastChild)|(document.body.firstChild)|(document.body.lastChild)|(document.documentElement)|(document.parentWindow)|(document.frames.top)|(document.frames.parent)|(document.frames.window)|(document.frames.frames)|(document.frames.self)|(document.body.document)|(document.body.parentElement)|(document.frames.document)|(document.body.currentStyle)|(document.body.runtimeStyle)|(document.body.style)|(document.body.children.\d+)|(document.body.parentNode)|(document.body.lastChild)|(document.body.ownerDocume
А вам не кажется, что пробегаться рекурсивно по документу и при этом в него же писать несколько стрёмно? Попробуйте сначала всё собрать в переменную, а напечатать в самом конце.
Стрёмно-то оно стрёмно, но в чем заключается стрёмность? - В том, что может зациклится, а тут наоборот.
Впринципе, можно сделать буферизацию вывода, хотя я и не вижу в этом смысла - вот при переборе IE'шного документа - там да, там document.all, там может зациклится.
А вообще, я идиот - с утра пораньше встал и понял :) "eval(mas[b])[a]" - пока строка, он делает нормальный вывод, когда объект - делает нормальный вывод, но когда я пытаюсь его резать - скрипт вырубается, ибо резать сабстрингом или матчем объекты не умеет, хорошо хоть IE подсказал.
Ага, увидел кто автор js3250.dll, ну что? Мне терь идти ругаться на форум Netscape Communication?
Глук номер два - трабла в условии, вот слегка улушченный скрипт:
<script type="text/javascript"> function getProps(mas){ for(b in mas){ for(a in eval(mas[b])){ document.writeln(mas[b]+"."+a+" = \""+eval(mas[b])[a]+"\"<br>"); if(eval(mas[b])[a]=="[object StyleSheetList]" || eval(mas[b])[a]=="[object HTMLCollection]" || eval(mas[b])[a]=="[object NodeList]"){ getProps(new Array(mas[b]+"."+a)); } } } } getProps(new Array("document"));
Пытаюсь продолжить - делаю такой скрипт:
<script type="text/javascript"> function getProps(mas){ for(b in mas){ for(a in eval(mas[b])){ document.writeln(mas[b]+"."+a+" = \""+eval(mas[b])[a]+"\"<br>"); if(eval(mas[b])[a]=="[object StyleSheetList]" || eval(mas[b])[a]=="[object HTMLCollection]" || eval(mas[b])[a]=="[object NodeList]" || eval(mas[b])[a]=="[object DocumentType]"){ getProps(new Array(mas[b]+"."+a)); } } } } getProps(new Array("document")); </script>
Опять же - вырубаемся раньше времени.. Если в перв
…Есть два скрипта, отличаются на одну строчку - вывод алерт-сообщения.
Задача скрипта - рекурсивно вывести все свойства объекта.
Скрипт первый, рабочий, но нет возможности дописать:
<script type="text/javascript"> function getProps(mas){ for(b in mas){ for(a in eval(mas[b])){ document.writeln(mas[b]+"."+a+" = \""+eval(mas[b])[a]+"\"<br>"); if(eval(mas[b])[a]=="[object HTMLCollection]"){ getProps(new Array(mas[b]+"."+a)); } } } } getProps(new Array("document")); </script>
Скрипт второй, нерабочий с дополнительный выводом сообщения:
<script type="text/javascript"> function getProps(mas){ for(b in mas){ for(a in eval(mas[b])){ document.writeln(mas[b]+"."+a+" = \""+eval(mas[b])[a]+"\"<br>"); alert(eval(mas[b])[a].substring(0,8)); if(eval(mas[b])[a]=="[object HTMLCollection]"){ getProps(new Array(mas[b]+"."+a)); } } } } getProps(new Array("document")); </script>
Первый скрипт выводит энное количество информации, второй - пару строк. Не прав
…Страницы: 1