Полезная информация

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!

Разработка » Глюк в JavaScript. » 26-11-2005 14:50:24

Хмм..

Глянул в HEX, js3250.dll - увидел слово XML, собсно всплывает вопрос, какие у JS есть функции для работы с XML?

Разработка » Глюк в JavaScript. » 26-11-2005 14:33:26

Не, я уже изобрел и покруче, конечно метод идиотский, но в результате - кроссбраузерность и выводится несколько больше объектов.

Ня вот, посмотришь:
[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

Разработка » Глюк в JavaScript. » 26-11-2005 12:13:01

А вам не кажется, что пробегаться рекурсивно по документу и при этом в него же писать несколько стрёмно? Попробуйте сначала всё собрать в переменную, а напечатать в самом конце.

Стрёмно-то оно стрёмно, но в чем заключается стрёмность? - В том, что может зациклится, а тут наоборот.

Впринципе, можно сделать буферизацию вывода, хотя я и не вижу в этом смысла - вот при переборе IE'шного документа - там да, там document.all, там может зациклится.

А вообще, я идиот - с утра пораньше встал и понял :) "eval(mas[b])[a]" - пока строка, он делает нормальный вывод, когда объект - делает нормальный вывод, но когда я пытаюсь его резать - скрипт вырубается, ибо резать сабстрингом или матчем объекты не умеет, хорошо хоть IE подсказал.

Разработка » Глюк в JavaScript. » 26-11-2005 03:52:31

Ага, увидел кто автор js3250.dll, ну что? Мне терь идти ругаться на форум Netscape Communication?

Разработка » Глюк в JavaScript. » 26-11-2005 03:33:00

Глук номер два - трабла в условии, вот слегка улушченный скрипт:

Выделить код

Код:

<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>

Опять же - вырубаемся раньше времени.. Если в перв

Разработка » Глюк в JavaScript. » 26-11-2005 03:22:54

Есть два скрипта, отличаются на одну строчку - вывод алерт-сообщения.

Задача скрипта - рекурсивно вывести все свойства объекта.

Скрипт первый, рабочий, но нет возможности дописать:

Выделить код

Код:

<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>

Первый скрипт выводит энное количество информации, второй - пару строк. Не прав

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]