0

也许这是一个愚蠢的问题,但我对 JavaScript 很困惑。我使用尽可能不显眼的 JavaScript 来遵循这个代码组织。我在 Ruby on Rails 中建立了一个使用 Google Maps 的网站。

我的场景:假设我有一个非常庞大的网站,在其中的不同页面中,我需要启动 JavaScript 脚本来执行一些操作。

一个问题是,无论用户访问哪个页面,我都必须将我网站的所有 JavaScript 代码添加到用户的浏览器中。例如,假设我有使用大量 JavaScript 代码的页面 A 和使用一些微小 JavaScript 代码的页面 B。据我了解,在页面 B 中,用户必须检索所有 JavaScript 代码(即,对于页面 A 和 B)。这不是有点不切实际吗?

更重要的是,对于这两个页面,JavaScript 都是由document.addEventListener("DOMContentLoaded", function, false);函数发起的。但是,A页面的功能假设有一个名为“pageA”的div(作为参考,以便通过js脚本修改或添加元素),同样页面B的功能假设有一个名为“ B 页”。因此,当我在页面 BI 上时收到没有“pageA”元素的 js 错误。我怎样才能避免这种情况?

鉴于这样一个事实,对于每个页面,我必须使用我的整个 JavaScript 代码(即所有页面)加载用户,我该如何启动(即在页面加载时立即启动,而不是在用户事件发生后立即启动)页面没有任何此类错误的特定 JavaScript 代码?我真的很困惑!

Wooho 非常快速的响应thanx伙计们!但我从未说过我将整个 js 代码写在 1 个单个文件中。相反,我使用了 RoR 的组织!(顺便说一句,将所有文件组合成一个文件)。为了澄清我的问题,我在不同的文件中启动了页面 A 的事件和页面 B(或 C 等)的事件。一旦 DOMContentLoaded 事件发生,代码就会触发。但是,当用户在页面 B 上时,我不想触发页面 A 的事件。或者类似地,我只想为页面 B 加载 js(这样页面 A 就不会触发任何事件)。我怎样才能做到这一点?

PS:如果您觉得有更好的标题,请随时提出建议!

4

1 回答 1

1

如果您将 Javascript 代码保存在单个文件中,则当用户请求您网站的第一页时,它只需加载一次(甚至可能编译一次,请参阅此内容)。然后浏览器将使用缓存副本,除非您禁止缓存(网络服务器的错误配置可以做到这一点)。

当您执行(JQuery)之类的操作时:

$('#nosuchid').something();

或者例如

$('.nosuchclass').each(function(i, el) { ... });

如果您的标记中不存在匹配的元素,则不会出现错误且无效。如果你使用,比如说,如果没有元素匹配document.getElementById(),它将返回null,你将不得不处理这种情况。如果您正确执行此操作,则不会出现任何错误。

正如您可以想象的那样,被跳过的代码并不需要时间来执行,因此也没有理由期待性能问题。

于 2012-11-18T16:33:31.950 回答