【发布时间】:2012-11-06 16:11:27
【问题描述】:
也许这是一个愚蠢的问题,但我对 JavaScript 很困惑。我遵循this 代码组织尽可能不显眼的JavaScript。我在 Ruby on Rails 中构建了一个使用 Google 地图的网站。
我的场景:假设我有一个非常庞大的网站,在其中的不同页面中,我需要启动 JavaScript 脚本来执行一些操作。
一个问题是,无论用户访问哪个页面,我都必须将我网站的所有 JavaScript 代码添加到用户的浏览器。例如,假设我有使用大量 JavaScript 代码的页面 A 和使用一些微小 JavaScript 代码的页面 B。据我了解,在页面 B 中,用户必须检索所有 JavaScript 代码(即,对于页面 A 和 B)。是不是有点不切实际?
更重要的是,对于这两个页面,JavaScript 都是由document.addEventListener("DOMContentLoaded", function, false); 函数启动的。但是,A页面的功能假设有一个名为“pageA”的div(作为参考,以便通过js脚本修改或添加元素),同样页面B的功能假设有一个名为“ B 页”。因此,当我在页面 B 上时,我收到没有“pageA”元素的 js 错误。我怎样才能避免这种情况?
鉴于,对于每个页面,我都必须使用我的整个 JavaScript 代码(即所有页面)加载用户,我该如何启动(即在页面加载时立即启动,而不是在用户事件之后启动发生)页面特定的 JavaScript 代码没有任何此类错误?我真的很困惑!
Wooho 非常快速的响应 thanx 伙计们!但我从未说过我将整个 js 代码写在 1 个单个文件中。相反,我使用了 RoR 的组织! (顺便说一句,将所有文件组合成一个文件)。为了澄清我的问题,我在不同的文件中启动了页面 A 的事件和页面 B(或 C 等)的事件。一旦 DOMContentLoaded 事件发生,代码就会触发。但是,当用户在页面 B 我不想触发页面 A 的事件时。或者类似地,我只想为页面 B 加载 js(这样页面 A 就不会触发任何事件)。我该怎么做?
PS:如果你觉得有更好的标题,欢迎提出建议!
【问题讨论】:
-
为什么您认为需要为所有页面加载所有 JavaScript?这当然是一种选择,但不是必需的。
-
...如果您确实希望将它们全部放在同一个文件中,您可以通过分析
window.location.pathname并基于此调用正确的函数来为正确的页面调用正确的函数。
标签: javascript unobtrusive domcontentloaded