Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让JavaScript知道我在站点上的位置?_Javascript_Jquery - Fatal编程技术网

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

如何让JavaScript知道我在站点上的位置?,javascript,jquery,Javascript,Jquery,我有一个单一的模板文件,它呈现的页面看起来非常相似,但行为有点不同。我有一个标题和几个文本框,由模板语言填充,还有一个画布,其内容实际上区分了页面。它基本上归结为根据我所在的页面调用不同的JavaScript函数,我真的想不出一个优雅的(!)方法来实现这一点 我有一个JavaScript文件,它使用jQuery的document ready回调向站点添加交互性,并在画布中绘制。为此,我必须根据我所在的页面调用一个特定的绘图函数,但当时我还不知道 这当然不是不可能的,事实上我可以想出几种不同的解决

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

我有一个JavaScript文件,它使用jQuery的document ready回调向站点添加交互性,并在画布中绘制。为此,我必须根据我所在的页面调用一个特定的绘图函数,但当时我还不知道

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


那么这通常是如何实现的呢?

您可以将任何想要的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的答案,很明显。但是你似乎已经在使用它了,所以我假设你对此没有意见……)从我的问题中可以看出,我已经意识到了这个解决方案,但我想一定有更好的解决方案。因为我不太喜欢其他的建议,我想我会这样做,在我的页面上设置一个全局变量……正如你从我的问题中所看到的,我已经意识到了这个解决方案,但我认为一定有更好的解决方案。因为我不太喜欢其他的建议,我想我会这样做,在我的页面上设置一个全局变量。。。