2

我有一个小问题,我想在页面打开后立即运行 javascript,但它对我不起作用。在我尝试过的许多论坛和教程中,他们建议在我的情况下使用 onload 函数:

<body onload="loadPage()">  

所以我的脚本被称为 loadPage,但是它不起作用......而不是打开其中一个页面(if 语句中的链接,else if 语句) - 只有一个空白页面。任何帮助都非常感谢!

<%@ include file="header.jsp" %> 
<%@ page import="java.sql.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ page import="java.util.ArrayList" language="java" %>
<%@ page import="java.text.MessageFormat" language="java" %>
<%@ page import="java.util.List" language="java" %>
<%@ page import="java.util.ArrayList" %>

<%
    String place = request.getParameter("place");
%>
<html>
<head>
<script type="text/javascript">
function loadPage() 
{
    if( <%=place%> == "birr")
    {
       window.open("http://localhost:82/IrishClimateData/Birr.jsp");
    }

    ...more else if statemens here...   

    else if( <%=place%> == "Shannonairport")
    {
       window.open("http://localhost:82/IrishClimateData/Shannon airport.jsp");
    }
}
</script>
</head>
<body onload="loadPage()">  
</body>
</html>

我尝试了不同的选项并执行了以下操作:

var placeName = "<%=place%>";
if( placeName == "birr")

我还必须补充;在函数结束时。我认为 apache tomcat 实际上会将它指向我 - 就像通常那样,但它没有......无论如何感谢所有人!

4

1 回答 1

1

删除服务器端代码并​​简化 loadPage 函数后,它看起来会运行良好。这是一个活生生的例子:http: //jsbin.com/ozetah/2/ ?place=birr

实时示例代码:

<html>
<head>
<script type="text/javascript">
function loadPage() {
  // code to replicate server side capture of GET parameter
  var place = /place=(.*?)(?:$|&)/.exec(document.location.search);
  if( place.length >1 ) { place = place[1]; }


  if( place == "birr") {
    window.open("http://localhost:82/IrishClimateData/Birr.jsp");
  } else if( place == "Shannonairport") {
    window.open("http://localhost:82/IrishClimateData/Shannon airport.jsp");
  } else {
    alert('place param of "'+place+'" doesn\'t match');
  }
}
</script>
</head>
<body onload="loadPage()">  
</body>
</html>

由于所有这些都有效并且您在代码中没有看到任何错误,因此我将检查 html 输出以确保您的服务器端代码输出您所期望的。您可以取出所有服务器端代码并​​重新开始添加片段,看看是什么破坏了它。

于 2013-04-13T02:21:45.653 回答