Как я могу иметь несколько функций document.observe (dom: загружен ...) в одном файле JavaScript? (прототип) - PullRequest
0 голосов
/ 19 февраля 2010

По сути, после того, как я сплющил весь мой JavaScript в один файл (или несколько файлов), как я могу сделать вызов функции document.observe (dom :loaded ({...})) для правастраница?

Итак, скажем, у меня есть 5 страниц на моем сайте, и у каждой есть отдельный файл JS.Внутри каждого файла находится множество функций, связанных со страницей, и специальная функция, которая устанавливает обработчики событий и т. Д. При загрузке DOM.Очевидно, что если все 5 страниц содержат свои собственные файлы JS, то это нормально.Но я хочу сжать все мои JS в одну страницу из соображений управления версиями и эффективности.

Поэтому при этом я получу 5 функций "dom: загружен", ожидающих установки.Это не сработает, поскольку содержимое этих функций зависит от конкретной страницы.Итак, мой вопрос: как я могу делать то, что хочу, не вызывая целую кучу ошибок DOM и ложных запросов на установку обработчика событий?

Я рассматривал пространства имен и тому подобное, но на самом деле ничего не знаю оэто / их.

Кстати, я использую Prototype lib.Да, и мои сайты значительно больше, чем 5 страниц!:)

Спасибо, Ли

Ответы [ 4 ]

1 голос
/ 19 февраля 2010

Я бы дал разные идентификаторы для <body> s отдельных файлов HTML и проверил в событии dom :loaded имя элемента <body>, используя $$('body')[0].id.

1 голос
/ 19 февраля 2010

Некоторые идеи: осмотрите дом, чтобы определить страницу. Например, прикрепите атрибут к элементу body. поместите скрипт скрипт на странице, которая устанавливает переменную. проверьте URL.

при возникновении события load обработчик события идентифицирует страницу и передает управление правильному коду.

0 голосов
/ 26 октября 2010

Я обычно пишу свои .js без самоактивации (насколько это возможно) ...

псевдо-код

namespace('mysite.section.init');
mysite.section.init.pageName = function(){
  //stuff to run here...
};

на домашней странице, внизу или через событие dom :loaded просто запустите mysite.section.init.pageName();

0 голосов
/ 19 февраля 2010

Я решил использовать регулярное выражение php для захвата URI, а затем использовать его в качестве идентификатора тела.На моих сайтах, где имена страниц статичны, это означает, что каждая страница будет иметь уникальный идентификатор.

Затем я включаю файл JS в HEAD, который содержит блок переключателя, внутри которого загружается соответствующий код / ​​функции,Блок переключателей находится внутри функции document.observe (dom: загружен ...).

Работает угощение!

Еще раз спасибо за вашу помощь.

...