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

2024-04-26

使用基于 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. 尝试通过检查在 JavaScript 中找出答案document.URL或 BASE 标签

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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以正确的方式从 JavaScript 获取 contextPath? 的相关文章

随机推荐