Такксс.....короче суть проблемы состоит в том, что существует код типа:

Выделить код

Код:

...
  var item = window.getBrowser().contentDocument.getElementById("BlaBlaBla");
  ...

...как видно, данный код вернет нам элемент по Id, но на многих сайтах поставить Id, либо забывают, либо ленятся. от сюда следует вопрос, как вытащить элемент по Name??? Пробавал через getElementsByTagName, но положительных результатов не было.

Жду вариантов решения проблемы. Спасибо

Reiter
В смысле, по атрибуту name? Это только унаследованными средствами DOM 0, т.е. через массивы document.links['name_value'], document.images[] и т.п.

Выделить код

Код:

getElementsByName()
Выделить код

Код:

var resultsByName=document.evaluate("//div[@name='SomeName']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(resultsByName.snapshotLength) {
    for(var i=0,cOdj;i<resultsByName.snapshotLength;i++) {
        cOdj=resultsByName.snapshotItem(i);
        ...
    }
}

Работает только в браузерах, поддерживающих XPath, например, Mozilla Firefox (не упрекайте меня, что я какой-то браузер забываю, потому что я привожу только один пример).

Lynn пишет
Выделить код

Код:

getElementsByName()

Хм....если я правильно понимаю, то вы подразумеваете nsIDOMHTMLDocument.getElementsByName()  или
HTMLDocument.getElementsByName().

Почитав описание на XulPlanethttp://www.xulplanet.com/references/obj … ument.html про HTMLDocument, я там и не понял способ его вызова из JS, пробовал

Выделить код

Код:

var item = HTMLDocument.getElementsByName("Blaaa");

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

Al_H пишет

Работает только в браузерах, поддерживающих XPath, например, Mozilla Firefox (не упрекайте меня, что я какой-то браузер забываю, потому что я привожу только один пример).

Спасибо, за пример, правда его еще не проверял, но если этот способ рабочий и другой альтернативы не будет, то обязательно воспользуюсь ;-)

Snik пишет

Reiter
В смысле, по атрибуту name? Это только унаследованными средствами DOM 0, т.е. через массивы document.links['name_value'], document.images[] и т.п.

Да, в смысле по атрибуту Name.  Хм... можно воспользоваться и таким способом, но мне кажется имеет смысл поигратся с интерфейсами.


Все спасибо, жду еще пояснений и новых предложений.

Выделить код

Код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<input name="x" value="zzz">
<input type="button" value="click me" onclick="alert(document.getElementsByName('x')[0].value)">
</body>
</html>

HTMLDocument — это класс, а элемент называется просто document.

Тут еще один вопрос появился. Чтобы не плодить новые темы напишу здесь.

Короче, с помощью такого вот кода:

Выделить код

Код:

...
   var HTMLDoc = Components.interfacesByID['{a6cf9084-15b3-11d2-932e-00805f8add32}'];
   var Items = Components.interfacesByID['{a6cf907d-15b3-11d2-932e-00805f8add32}'];
   ...
   HTMLDoc = window.getBrowser().contentDocument;
   Items = HTMLDoc.getElementsByName("BlaBlaBla");
   if (Items.length > 0)
   {
      ...
        что-то делаем
      ...
   }

...этим когом мы находим нужный нам элемент, но возникла другая проблема, как в него вставить значения? На выходе мы получаем интерфейс nsIDOMNode (http://www.xulplanet.com/references/xpc … MNode.html). Пробовал вставлять значения в nodeValue и просто Value, но безрезультатно.

Есть, какие либо соображения по этому поводу?