使用基于Java的后端(即servlet和JSP),如果我需要来自JavaScript的contextPath,推荐的模式是什么,为什么?我能想到几种可能性。我错过了什么吗?
1.将脚本标记烧录到在某个JavaScript变量中设置它的页面中
<script>var ctx = "<%=request.getContextPath()%>"</script>
这是准确的,但在加载页面时需要执行脚本。
2.在一些隐藏的DOM元素中设置contextPath
<span id="ctx" style="display:none;"><%=request.getContextPath()%></span>
这是准确的,并且在加载页面时不需要执行任何脚本。但是,当需要访问contextPath时,确实需要DOM查询。如果您非常关心性能,那么可以缓存DOM查询的结果。
3.通过检查 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查询)。
https://stackoverflow.com/questions/6615641
复制相似问题