如何在一个javascript文件中包含多个document.observe(dom:loaded ...)函数? (原型)

时间:2010-02-19 02:36:57

标签: javascript dom prototype

基本上我所追求的是,​​在将我的所有JavaScript压缩到一个文件(或几个文件)之后,我如何创建一个document.observe(dom:loaded({...}))函数调用右键网页?

所以,我的网站上有5个页面,每个页面都有一个单独的JS文件。每个文件内部都有一个页面相关函数的加载,以及一个特殊的函数,它在DOM加载时设置事件处理程序等。显然,如果所有5个页面都包含自己的JS文件,那就没问题了。但出于版本控制和效率原因,我想将所有JS压缩到一个页面中。

因此,在这样做时,我最终会有5个“dom:loaded”函数等待设置。这不会做,因为这些函数中的内容是特定于页面的。所以,我的问题是如何在不造成一大堆DOM错误和错误的事件处理程序设置请求的情况下做我想做的事情?

我已经考虑了名称空间和类似的东西,但对它/它们一无所知。

顺便说一下,我正在使用Prototype lib。哦,我的网站比5页大得多! :)

谢谢, 利

4 个答案:

答案 0 :(得分:1)

一些想法: 检查dom以识别页面。例如,将属性附加到body元素。 在设置变量的页面中放置一个脚本标记。 检查网址。

当加载事件触发时,事件处理程序识别页面并将控制权交给正确的代码。

答案 1 :(得分:1)

我会为单独的HTML文件的<body>提供不同的ID,并使用<body>在dom:loaded事件中测试$$('body')[0].id元素的名称。

答案 2 :(得分:0)

我选择使用php regexp来捕获URI,然后使用它作为正文ID。在我的网站上,页面名称是静态的,这意味着每个页面都有一个唯一的ID。

然后我在HEAD中包含一个JS文件,其中包含一个开关块,其中加载了相应的代码/功能。开关块位于document.observe(dom:loaded ...)函数内。

努力享受!

再次感谢您的帮助。

答案 3 :(得分:0)

我倾向于总是写我的.js而没有自我激活(尽可能多)......

伪代码

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

在您的主页,底部或通过dom:loaded事件只需运行mysite.section.init.pageName();