如何停止重新加载Javascript

时间:2014-07-18 14:55:36

标签: javascript jquery spring jsp tiles

由于Tiles,我的Javascript重新加载存在问题。

瓦片-definition.xml

<tiles-definitions>
         <definition name="template-main" template="/WEB-INF/jsp/home.jsp">
              <put-attribute name="header-main-content" value="/WEB-INF/jsp/header_main.jsp"/>  
              <put-attribute name="header-quote-content" value="/WEB-INF/jsp/header_quote.jsp" />
              <put-attribute name="menu-content" value="/WEB-INF/jsp/menu.jsp" />
              <put-attribute name="body-content" value="/WEB-INF/jsp/slides.jsp" />
              <put-attribute name="footer-content" value="/WEB-INF/jsp/footer.jsp" />
         </definition>

         <definition name="template-main-login" extends="template-main">
              <put-attribute name="header-main-content" value="/WEB-INF/jsp/header_main.jsp" />
         </definition> 
</tiles-definitions>

针对home.jsp

<body style="background-color: #5F9EA0">

    <head>
        <script src="<c:url value="/resources/js/jquery-1.11.1.js" />"></script>
        <script src="<c:url value="/resources/js/example.js" />"></script>

        bla bla .. 

example.js

$(document).ready(function() {
    setTimeout(function () {
        popUp('show');
    }, 1000);

});

我正在使用Spring-MVC:

加载应用程序后,我将视图作为 template-main 返回。因此,调用第一个模板定义并使用登录弹出窗口打开应用程序,因为我在文档加载时调用弹出窗口。

问题:

现在,当我提供登录凭据并提交时,我正在调用 template-main-login ,而后者正在扩展 template-main 。现在问题是,我已经包含在home.jsp中的Javascript再次加载(可能是因为我正在扩展模板主布局),这样我第二次打开弹出窗口,我想停止。

所以请让我知道如何再次停止弹出窗口。

2 个答案:

答案 0 :(得分:1)

我建议而不是将home.jsp作为你的模板为你的模板创建一个单独的jsp,basetemplate将有一些通用的东西,比如加载外部js和css文件,并在特定的jsp中保留特定的js代码

答案 1 :(得分:0)

您需要确保您的JS文件具有正确的缓存控制/过期标头(设置较长的日期或使用ETag)。如果使用ETag,静态文件仍将查询服务器实现以检查文件哈希是否已更改。您可以通过在所有静态文件上使用expires标头来避免这种情况,以便浏览器可以缓存它们并从本地计算设备加载它们,而不是向服务器发送HTTP请求。