Как получить объект YUI на странице - PullRequest
0 голосов
/ 30 сентября 2011

Я использую инфраструктуру YUI2.

Я хочу иметь возможность получить ссылку на объект, созданный на странице.Я не хочу изменять существующий код JS для хранения глобального дескриптора для него при его создании, если это возможно.

На странице есть что-то вроде этого:

<script type="text/javascript">//<![CDATA[
new FirstRate.Reporter("report1").setOptions(
   {   
      inData: "testfunc"
   }));
//]]></script>

Я не вижу никаких методов в YAHOO.util.Dom, специфичных для поиска объектов.Как я могу получить ссылку на объект FirstRate.Reporter?Есть ли что-нибудь, чтобы перечислить объекты на странице?

Спасибо

Ответы [ 2 ]

1 голос
/ 30 сентября 2011

YUI содержит множество методов для поиска объектов в DOM веб-страницы. YAHOO.util.DOM содержит методы:

HTMLElement | Array get ( el )
Array getElementsBy ( method , tag , root , apply , o , overrides )
HTMLElement getElementBy ( method , tag , root )
Array getElementsByClassName ( className , tag , root , apply , o , overrides )

и многое другое. Они получают объекты из DOM. Чтобы найти объект на странице с YUI2, вы обычно используете некоторую комбинацию типа тега, имени класса или идентификатора для запроса страницы с помощью методов YUI, чтобы найти нужный объект. Проще всего найти конкретный объект на странице, если вы дадите ему уникальное значение id, а затем вы можете просто использовать YAHOO.util.DOM.get ("myObject"), чтобы получить его (где "myObject" - это идентификатор HTML-кода. элемент).


Если вы хотите получать обычные объекты javascript, то вы должны сами хранить ссылки на них в своих переменных javascript. YUI не делает этого за вас, за исключением использования некоторых виджетов UI (которые также имеют элементы DOM).

Если вы хотите отслеживать результат этого:

new FirstRate.Reporter("report1").setOptions(
   {   
      inData: "testfunc"
   })

Затем вам необходимо присвоить его переменной или свойству объекта, область действия которого позволяет ему работать достаточно долго, чтобы вы могли его использовать.

var theReporter = new FirstRate.Reporter("report1").setOptions(
   {   
      inData: "testfunc"
   })

или

myObject.reporter = new FirstRate.Reporter("report1").setOptions(
   {   
      inData: "testfunc"
   })

где myObject - какой-то другой объект, который вы создали и храните.

1 голос
/ 30 сентября 2011

JavaScript объекты не являются частью DOM. DOM - это объектная модель документа, она касается таких объектов в HTML-документе, как div, формы, входные данные и т. Д., Типа объектов, отображаемых браузером.

В JavaScript нет "глобального перечисления" объектов. Есть глобальные переменные.

Я не хочу изменять существующий код JS, чтобы сохранить для него глобальный дескриптор

Так что вы не хотите использовать глобальную переменную. Но почему?

Это единственный способ сделать это, и это также очень просто:

var myGlobalVar = new FirstRate.Reporter ("report1"). SetOptions ({inData: "testfunc"}));

Здесь вы будете хранить ссылку (как вы говорите) на ваш объект в глобальном var myGlobalVar, к которому вы позже сможете обратиться в другой части вашего кода JavaScript.

...