gpt4 book ai didi

javascript - 如何以正确的方式从 JavaScript 获取 contextPath?

转载 作者:IT王子 更新时间:2023-10-29 02:54:08 24 4
gpt4 key购买 nike

使用基于 Java 的后端(即 servlet 和 JSP),如果我需要来自 JavaScript 的 contextPath,推荐的模式是什么,为什么?我能想到几种可能性。我错过了什么吗?

<强>1。将 SCRIPT 标记刻录到页面中,将其设置在某个 JavaScript 变量中

<script>var ctx = "<%=request.getContextPath()%>"</script>

这是准确的,但需要在加载页面时执行脚本。

<强>2。在一些隐藏的 DOM 元素中设置 contextPath

<span id="ctx" style="display:none;"><%=request.getContextPath()%></span>

这是准确的,加载页面时不需要执行任何脚本。但是当需要访问 contextPath 时,您确实需要 DOM 查询。如果您非常关心性能,可以缓存 DOM 查询的结果。

<强>3。尝试通过检查 document.URL 或 BASE 标记

在 JavaScript 中找出答案
function() {
var base = document.getElementsByTagName('base')[0];
if (base && base.href && (base.href.length > 0)) {
base = base.href;
} else {
base = document.URL;
}
return base.substr(0,
base.indexOf("/", base.indexOf("/", base.indexOf("//") + 2) + 1));
};

这不需要在加载页面时执行任何脚本,如果需要,您还可以缓存结果。但这仅在您知道上下文路径是单个目录时才有效——而不是根目录 (/) 或向下的多个目录 (/mypath/iscomplicated/ ).

我往哪个方向倾斜

我更喜欢隐藏的 DOM 元素,因为它不需要在加载页面时执行 JavaScript 代码。只有当我需要 contextPath 时,我才需要执行任何操作(在本例中,运行 DOM 查询)。

最佳答案

根据评论中的讨论(尤其是来自 BalusC 的评论),可能不值得做任何比这更复杂的事情:

<script>var ctx = "${pageContext.request.contextPath}"</script>

关于javascript - 如何以正确的方式从 JavaScript 获取 contextPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6615641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com