2010-02-19 3 views
0

기본적으로, 모든 JavaScript를 하나의 파일 (또는 몇 개의 파일)로 스쿼시 한 ​​후 document.observe (dom : loaded ({...})) 함수 호출을 어떻게 할 수 있습니까? 오른쪽 페이지?어떻게 하나의 javascript 파일 내에 여러 document.observe (dom : loaded ...) 함수를 가질 수 있습니까? (prototype)

내 웹 사이트에 5 페이지가 있고 각 페이지마다 별도의 JS 파일이 있다고 가정 해보십시오. 각 파일에는 페이지 관련 함수가로드되어 있으며 DOM이로드되면 이벤트 핸들러 등을 설정하는 특수 함수가 있습니다. 모든 5 페이지에 JS 파일이 포함되어 있다면 분명 좋습니다. 하지만 버전 및 효율상의 이유로 모든 JS를 한 페이지에 압축하려고합니다.

따라서 이렇게하면 5 개의 "dom : loaded"함수가 설치를 기다리고 있습니다. 이 함수 내부의 내용은 페이지마다 다르기 때문에이 작업을 수행하지 않습니다. 그래서, 내 질문에 어떻게 내가 DOM을 오류 및 false eventhandler 설치 요청을 많이하지 않고 무엇을하고 싶은 일을 할 수 있습니까?

Ive는 네임 스페이스를 고려했지만 그와 같은 것들은 실제로 알지 못합니다.

Btw, Prototype lib를 사용하고 있습니다. 오, 내 사이트는 5 페이지보다 상당히 큽니다! :)

감사합니다, 리

답변

1

몇 가지 아이디어 : 페이지를 식별하기 위해 DOM을 검사합니다. 예를 들어, body 요소에 속성을 첨부하십시오. 변수를 설정하는 페이지에 script 태그를 넣습니다. URL을 검사하십시오.

로드 이벤트가 발생하면 이벤트 처리기가 페이지를 식별하고 적절한 코드를 제어합니다.

+0

시간을내어 답변 해 주셔서 감사합니다. 나는 그 아이디어를 다소 고려해 보았지만 비트를 "해킹"한 것처럼 털어 냈습니다. 나는 너무 까다로워하는 Im를 추측한다. 아프게 그들에게 가자. 감사합니다 –

1

다른 HTML 파일의 <body>에 다른 ID를 부여하고 $$('body')[0].id을 사용하여 <body> 요소의 이름을 dom : loaded 이벤트에서 테스트합니다.

+0

고마워요. 위의 Chris의 제안과 함께이 사실을 알려 드리겠습니다. –

+0

@LeeRM : 천만에요. –

0

나는 PHP 정규 표현식을 사용하여 URI를 캡처 한 다음이를 바디 ID로 사용합니다. 페이지 이름이 정적 인 내 사이트에서는 각 페이지마다 고유 한 ID가 있음을 의미합니다.

그런 다음 적절한 코드/함수가로드되는 스위치 블록을 포함하는 HEAD에 JS 파일을 포함합니다. 스위치 블록은 document.observe (dom : loaded ...) 함수 안에 있습니다.

대우!

도움에 다시 한 번 감사드립니다.

0
난 항상 (가능한 한 많이)없이 자기의 활성화와 내의 .js를 작성하는 경향이

...

홈 페이지에서

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

사이비 코드, 바닥에서, 또는를 통해 dom :로드 된 이벤트는 단순히 실행합니다. mysite.section.init.pageName();

관련 문제