代码之家  ›  专栏  ›  技术社区  ›  Kleber Mota

如何在JSP页面中包含外部JS文件

  •  15
  • Kleber Mota  · 技术社区  · 11 年前

    我有一个springmvc应用程序,在我的主页中,我需要使用javascript文件。我尝试以以下方式包含文件:

    <script type="text/javascript" src="js/index.js"></script>
    

    但当我运行应用程序时,系统行为似乎没有脚本在运行。也可以尝试一下:

    <script type="text/javascript" src="<c:url value='js/index.js'/>"></script>
    

    但结果是一样的。有人知道为什么会这样吗?

    ps.:我的页面的整个代码是:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
      <title>HorarioLivre</title>
    
      <script src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
      <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
      <script type="text/javascript" src="js/index.js"></script>
    
      <link rel="stylesheet" href="css/style-main.css">
      <link rel="stylesheet" href="css/style-popup.css">
    </head>
    <body>
      <header>
        <div class="container">
          <h1><a href="#">HorarioLivre</a></h1>
          <nav>
            <ul>
              <li><a href="listagem_evento.html" class="icon evento">Eventos</a></li>
              <li><a href="cadastra_horario.html" class="icon horario">Cadastrar Horarios</a></li>
              <li><a href="listagem_horario.html" class="icon horario">Listar Horarios</a></li>
              <li><a href="listagem_usuario.html" class="icon usuario">Usuarios</a></li>
              <li><a href="#">${usuario.nome}</a>
                <ul>
                    <li><a href="usuario_perfil.html" class="icon perfil">Perfil</a></li>
                    <li><a href="usuario_config.html" class="icon settings">Configura&ccedil;&otilde;es</a></li>
                    <li><a href="usuario_logoff.html" class="icon logout">Sair</a></li>
                </ul>
              </li>
            </ul>
          </nav>
        </div>
      </header>
      <div id="results">
            <a href="#" id="close">Fechar</a>
            <div id="content"></div> 
      </div>
    </body>
    </html>
    

    脚本应该在弹出窗口中打开我的子页面,但它们是在浏览器窗口中打开的。

    **更新1**

    我的index.js是:

    $(document).ready(function(){
       setupPopup();
    });
    
    function setupPopup() {
       $('a').click(function() {
           $('#content').load($(this).attr('href'));
          $('#container').append('<div id="cover">');
          $('#results').fadeIn(500);
          popupPosition();
       });
    
       $('#close').click(function() {
          $('#results').fadeOut(100);
          $('#cover').remove();
       });
    
       $(window).bind('resize', popupPosition);
    }
    
    function popupPosition() {
       if(!$("#results").is(':visible')){ return; }
    
       $("#results").css({
          left: ($(window).width() - $('#results').width()) / 2,
          top: ($(window).width() - $('#results').width()) / 7,
          position:'absolute'
       });
    
       $('#results').draggable();
    }
    
    4 回复  |  直到 11 年前
        1
  •  9
  •   VHS    8 年前

    但当我运行该应用程序时,系统行为似乎没有 脚本正在运行。

    这是因为浏览器无法从指定位置加载javascript“index.js”。如果您打开浏览器控制台并转到“networks”选项卡,您将看到404(未找到资源)。您不能这样在JSP文件中指定JavaScript的相对URL。

    您需要提供文件夹结构(index.js位于项目中的位置)以及如何配置web.xml

    <script type="text/javascript" src="${pageContext.request.contextPath}/js/index.js"></script>

    然后将包含“index.js”的“js”文件夹保持在与“WEB-INF”相同的级别。

        2
  •  0
  •   Marios Nikolaou    11 年前

    检查索引文件的路径,然后确保代码正确。我假设js是一个文件夹。发布index.js代码。

        3
  •  0
  •   JW JR    3 年前

    为了节省其他人解决这个问题所花费的半小时时间,VHS的答案需要为升级到雅加达的任何人更新。参考需要是: <script type="text/javascript" src="${jakarta.servlet.jsp.PageContext}/js/index.js"></script>

        4
  •  0
  •   Lof    2 年前

    如果“myJavascript.js”与jsp页面位于同一目录中:

    <script type="text/javascript"><%@include file="myJavascript.js" %></script>