如何让JavaScript知道我在站点上的位置?
我有一个单一的模板文件,它呈现的页面看起来非常相似,但行为有点不同。我有一个标题和几个文本框,由模板语言填充,还有一个画布,其内容实际上区分了页面。它基本上归结为根据我所在的页面调用不同的JavaScript函数,我真的想不出一个优雅的(!)方法来实现这一点 我有一个JavaScript文件,它使用jQuery的document ready回调向站点添加交互性,并在画布中绘制。为此,我必须根据我所在的页面调用一个特定的绘图函数,但当时我还不知道 这当然不是不可能的,事实上我可以想出几种不同的解决方案,但我真的不喜欢其中任何一种。脚本文件不是通过模板引擎运行的,因此我不能在那里使用任何服务器端逻辑。我可以解析脚本中的URL,但这听起来像是一种黑客行为。我也可以在模板文件中的脚本块中设置一个变量,设置一个隐藏字段的值或类似的东西,但我认为这个逻辑也不属于模板如何让JavaScript知道我在站点上的位置?,javascript,jquery,Javascript,Jquery,我有一个单一的模板文件,它呈现的页面看起来非常相似,但行为有点不同。我有一个标题和几个文本框,由模板语言填充,还有一个画布,其内容实际上区分了页面。它基本上归结为根据我所在的页面调用不同的JavaScript函数,我真的想不出一个优雅的(!)方法来实现这一点 我有一个JavaScript文件,它使用jQuery的document ready回调向站点添加交互性,并在画布中绘制。为此,我必须根据我所在的页面调用一个特定的绘图函数,但当时我还不知道 这当然不是不可能的,事实上我可以想出几种不同的解决
那么这通常是如何实现的呢?您可以将任何想要的JavaScript嵌入到网页中,并使用与构建网页相同的服务器端逻辑构建网页。因此,您可以设置全局变量,或者(最好)使用包含页面特定逻辑的参数从.js文件调用函数。只需在
标记之间提供脚本即可。您可以将任何想要的JavaScript嵌入到网页中,该网页采用与构建网页相同的服务器端逻辑构建。因此,您可以设置全局变量,或者(最好)使用包含页面特定逻辑的参数从.js文件调用函数。只需在
标记之间提供脚本。不清楚您是要查找您所在的页面,还是要查找给定页面在DOM中的位置。对于前者,请使用location.href或location.pathname来避免解析。不清楚您是要查找您所在的页面,还是要查找给定页面的DOM中的位置。对于前者,请使用location.href或location.pathname来避免解析。您可以给
标记一个“class”值,您的JavaScript代码可以使用该值(以及其他类似提示)来了解要添加的行为类型
例如,您的代码可以执行以下操作:
if ($('body').hasClass('image-gallery')) {
// ... initialize image gallery code ...
}
if ($('body').hasClass('shopping-cart-summary')) {
// ... whatever ...
}
当然,它不一定只是
标签。您的
还可以获得一个“class”值(和/或“datafoo”属性)来向您的代码传递信息。您可以给
标记一个“class”值,您的JavaScript代码可以使用该值(和其他类似提示)来知道要添加哪些行为
例如,您的代码可以执行以下操作:
if ($('body').hasClass('image-gallery')) {
// ... initialize image gallery code ...
}
if ($('body').hasClass('shopping-cart-summary')) {
// ... whatever ...
}
当然,它不一定只是
标签。您的
还可以获得一个“class”值(和/或“datafoo”属性)来向代码传递信息。这是真的。如果(location.href==“…”)包含大开关类型语句的general.js文件太可怕了,无法想象:-)这会复制我的servlet中的逻辑,即在客户端上哪个URL指向哪个页面,我真的不喜欢。这是真的。如果(location.href==“…”)包含大开关类型语句的general.js文件太可怕了,我无法想象:-)这会复制我的servlet中的逻辑,即哪个URL指向客户端上的哪个页面,我真的不喜欢。我能建议在你的问题中添加jQuery标记吗?(也就是说,如果你很乐意接受jQuery的答案,很明显。但是你似乎已经在使用它了,所以我假设你对此没有意见……)我可以建议在你的问题中添加jQuery标签吗?(也就是说,如果你很乐意接受jQuery的答案,很明显。但是你似乎已经在使用它了,所以我假设你对此没有意见……)从我的问题中可以看出,我已经意识到了这个解决方案,但我想一定有更好的解决方案。因为我不太喜欢其他的建议,我想我会这样做,在我的页面上设置一个全局变量……正如你从我的问题中所看到的,我已经意识到了这个解决方案,但我认为一定有更好的解决方案。因为我不太喜欢其他的建议,我想我会这样做,在我的页面上设置一个全局变量。。。