使用JavaScript阻止JSP页面加载

5

如何阻止 JSP 页面? 我希望当我点击链接并重定向到每个页面时,针对特定用户阻止某些特定页面。我创建了一个 JavaScript 函数来检索每个用户的 JSP 页面(用户可以访问的页面)。但我不知道如何为同一用户阻止其他页面。


解决方案必须使用 [tag:jsp] 吗?如果全部使用 [tag:javascript],您是否接受? - user7393973
我更喜欢使用这些语言中的任何一种。 - chamzz.dot
请查看我的答案,如果有帮助,请告诉我。 - user7393973
4个回答

4

使用js document.getElementById("链接的id名称").style.display = 'none'; 来从页面中删除链接,使用 'block' 来显示链接而不是 'none'


当禁用所有链接然后启用用户可以访问的适当链接时,它可以工作。 - chamzz.dot

3
你可以使用event.preventDefault();,并设置一个变量来判断是否应该阻止用户。请参考以下示例:

var BlockUser = true;
function CheckUser() {
  if ( BlockUser ) {
    event.preventDefault();
  }
}
<a href="http://stackoverflow.com/">Link for any user</a>
<br>
<a href="http://stackoverflow.com/" onclick="CheckUser()">Link for certain users</a>


这很有帮助。我通过首次禁用所有链接,然后为每个用户激活适当的链接来完成它。 - chamzz.dot

2
纯JSP解决方案:
假设您有一个可用链接的数组:List<String> links,您将其以相同的名称传递给请求(或者您可以从用户检索它,无论获取方式如何,假设您拥有这些链接的数组),然后可以执行以下操作:
    ...
    <c:forEach var="link" items="${links}">
    <a href="${link}" <c:if test="/*here you test if user have 
access, i dont know how you do it*/"> class="inactiveLink" </c:if>>page link</a>
    </c:forEach>
    ...

其中...是您的JSP的其余部分,定义样式

.inactiveLink {
   pointer-events: none;
   cursor: default;
}

请注意,为了使用foreach,您应该在jsp的顶部定义jstl标签库:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

如果您不知道JSTL是什么,以及EL通常是什么,可以看一下以下链接:知道什么是JSTL,以及什么是EL 关于禁用CSS和JS,有一个好的想法是只打印允许的链接,这样它们就完全无法访问:
...
<c:forEach var="link" items="${links}">
<c:if test="/*here you test if user have 
    access, i dont know how you do it*/"> 
        <a href="${link}">page link</a>
</c:if>
</c:forEach>
...

使用 pointer-events 属性是一个原创的想法。尽管禁用 CSS 很容易,但我会对我的 JavaScript 说同样的话。 - user7393973

1
您可以使用这个。
document.getElementById( "id of your link element" ).style.display = 'none';

style.display 用于通过将其设置为 none 来隐藏元素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接