如何让JavaScript知道我在网站上的位置?

时间:2011-04-02 20:00:41

标签: javascript jquery

我有一个模板文件,它呈现看起来非常相似的页面,但行为有点不同。我有一个标题和几个文本框,它们由模板语言填充,并且有一个画布,其内容实际上区分了页面。它基本上归结为根据我所在的页面调用不同的JavaScript函数,我真的不能想到一种优雅的(!)方法来做到这一点。

我有一个JavaScript文件,它使用jQuery的文档就绪回调来为站点添加交互性,还可以在画布中进行绘制。为此,我必须根据我所在的页面调用特定的绘图功能,但此时我不知道。

这当然不是不可能的,我实际上可以想到几种不同的解决方案,但并不真正喜欢这些解决方案。脚本文件不是通过模板引擎运行的,所以我不能在那里使用任何服务器端逻辑。我可以在脚本中解析URL,但这对我来说听起来像是一个黑客。我还可以在模板文件中的脚本块中设置变量,设置隐藏字段的值或类似的值,但我不认为这个逻辑也属于模板。

那通常怎么做?

3 个答案:

答案 0 :(得分:1)

您可以为<body>标记赋予“类”值,并且您的JavaScript代码可以使用该代码(以及其他类似的提示)来了解要添加的行为类型。

例如,您的代码可以执行以下操作:

if ($('body').hasClass('image-gallery')) {
  // ... initialize image gallery code ...
}

if ($('body').hasClass('shopping-cart-summary')) {
  // ... whatever ...
}

当然,它不一定只是<body>标签。您的<canvas>也可以获得“类”值(和/或“data-foo”属性)以向您的代码传达信息。

答案 1 :(得分:0)

您可以将所需的任何JavaScript嵌入到网页中,使用与构建页面相同的服务器端逻辑构建。因此,您可以使用包含特定于页面的逻辑的参数设置全局变量或(最好)调用.js文件中的函数。只需在<script>标记之间提供脚本。

答案 2 :(得分:0)

目前尚不清楚您是否要查找您所在的页面或给定页面的DOM中的位置。对于前者,请使用 location.href location.pathname 以避免解析。