基本上我所追求的是,在将我的所有JavaScript压缩到一个文件(或几个文件)之后,我如何创建一个document.observe(dom:loaded({...}))函数调用右键网页?
所以,我的网站上有5个页面,每个页面都有一个单独的JS文件。每个文件内部都有一个页面相关函数的加载,以及一个特殊的函数,它在DOM加载时设置事件处理程序等。显然,如果所有5个页面都包含自己的JS文件,那就没问题了。但出于版本控制和效率原因,我想将所有JS压缩到一个页面中。
因此,在这样做时,我最终会有5个“dom:loaded”函数等待设置。这不会做,因为这些函数中的内容是特定于页面的。所以,我的问题是如何在不造成一大堆DOM错误和错误的事件处理程序设置请求的情况下做我想做的事情?
我已经考虑了名称空间和类似的东西,但对它/它们一无所知。
顺便说一下,我正在使用Prototype lib。哦,我的网站比5页大得多! :)
谢谢, 利
答案 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();