由于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再次加载(可能是因为我正在扩展模板主布局),这样我第二次打开弹出窗口,我想停止。
所以请让我知道如何再次停止弹出窗口。
答案 0 :(得分:1)
我建议而不是将home.jsp作为你的模板为你的模板创建一个单独的jsp,basetemplate将有一些通用的东西,比如加载外部js和css文件,并在特定的jsp中保留特定的js代码
答案 1 :(得分:0)
您需要确保您的JS文件具有正确的缓存控制/过期标头(设置较长的日期或使用ETag)。如果使用ETag,静态文件仍将查询服务器实现以检查文件哈希是否已更改。您可以通过在所有静态文件上使用expires标头来避免这种情况,以便浏览器可以缓存它们并从本地计算设备加载它们,而不是向服务器发送HTTP请求。