查找是否在JSP中启用/禁用了JavaScript

时间:2012-01-10 01:47:03

标签: java javascript html jsp noscript

我有一个网页,其中部分页面是通过AJAX加载的, 但如果没有启用JavaScript,我也想让它工作。

所以,我把代码编写为

<script>
    fetchCitiesAndDisplay ();
</script>
<noscript>
    <%
        out.print(Cities.getHtml ());
    %>
</noscript>

,其中

  

fetchCitiesAndDisplay()

是一个javaScript方法,它将获取内容(执行Cities.java中的代码)并显示它。

  

Cities.java

是一个Java类,它将从数据库中收集城市并生成要显示的html内容。

当JavaScript关闭时,一切都很好......因为ajax调用不会被执行,只有一个Cities.getHtml()会被调用。

但是,当启用JavaScript时,也会执行Ajax调用并且还会调用Cities.getHtml()..即使显示因为标记看起来正确,Cities.java也会为同一数据获取两次调用,它吃了很多时间......

如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

我想知道你是否不理解<noscript>是如何运作的。它不会在您的服务器端模板中发挥作用,因此您放入的任何服务器端逻辑都将始终执行,无论是否最终在浏览器中启用了javascript。

因此,这对我来说并没有多大意义,因为无论javascript是打开还是关闭,都会生成<noscript>内的HTML。它将始终在页面中。所以,如果它总是在页面中,那么为什么当javascript开启时通过ajax获取它?

答案 1 :(得分:0)

我必须同意@ jfriend00,如果使用1页启用javascript则无法识别

您可以使用javascript设置一个隐藏变量,当页面提交时您可以检查它并确定是否启用了javascript ..但这需要1个请求/响应周期,可能您可以拥有将请求转发到预期页面的临时页面(使用上面讨论的隐藏变量)。

答案 2 :(得分:0)

为什么不让你的javascript代码在页面加载时加载一个小的html / image / etc片段。如果启用了javascript,您可以看到该文件已被请求。如果它被禁用,则不会请求该文件。