我有两个页面,一个是主页面,另一个是内页面:
页面名称:main.jsp,sidebar.jsp 我想在这两个页面上调用onload函数。那可能吗。如果是,如何?
以下是 main.jsp:
的代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ include file="/pages/common/init.jsp"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>J.C. Taylor - Broker Website</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<link rel="stylesheet" href="/css/default.css" media="screen" type="text/css" />
</head>
<body onload="prepopulateFields();load(17);">
<s:form name="continue" id="continue_id" action="continue" method="POST" validate="true" enctype="multipart/form-data">
<div id="wrapper">
<div id="main">
<div id="sidebar">
<%@ include file="/pages/common/sidebar.jsp"%>
<span class="clearIt"></span>
</div>
sidebar.jsp是:
<body onload="setSelected();">
//Some static content here
</body>
所以基本上我想要的是调用prepopulateFields()Javascript方法,该方法属于主.jsp页面的onload()事件,而setSelected()属于sidebar.jsp的onload()方法,同时且单独地。
我知道我可以调用setSelected(); prepopulateFields()方法内部的方法,但我不想这样做。我想要的只是在加载页面时,应分别调用onload函数。
如果您有任何建议,请告诉我们! 我知道我在这里有点荒谬,但如果我能做到这一点我的工作将非常轻松。
答案 0 :(得分:1)
我认为你不能调用多个onload函数。 最好的方法是从已经调用的函数
调用该方法function prepopulateFields(){
if //condition which check the current page where you want other onload function
setSelected();
}
<body onload="prepopulateFields();load(17);">
</body>
答案 1 :(得分:0)
您无法嵌套HTML <body>
元素,它只会导致HTML格式错误。
最好将其作为<script>
放在sidebar.jsp
的底部。
<script type="text/javascript">setSelected()</script>
答案 2 :(得分:0)
如果你使用firebug来检查main.jsp的渲染html页面。你会看到只有一个&lt; body&gt; 元素。 &lt; sidebar.jsp中的body&gt; 元素未呈现,因为它会在包含的jsp中将HTML格式错误为html or body not allowed。
Be careful that the included file does not contain <html>, </html>, <body>, or </body> tags
解决方案是:
答案 3 :(得分:0)
window.onload = codeAddress;应该管用。这是一个演示。完整的代码:
<script type="text/javascript">
function codeAddress() {
alert('ok');
}
window.onload = codeAddress;
</script>
答案 4 :(得分:0)
将类定义放在父jsp中,并在include中实例化所需的onloads。
<SCRIPT>
// this portion was placed above the Class definition for convenience.
// make sure the Class definition gets loaded first in your code.
new OnLoad(function(){
alert("document loaded");
},100);
</SCRIPT>
...
<SCRIPT>
// Class Definition
OnLoad = function(taskFunction,miliseconds) {
var context = this;
context.cnt = 0;
context.id = null;
context.doTask=taskFunction;
context.interval = function() {
if(document.readyState == "complete"){
try{ context.stop();} catch(e){ throw new Error("stop error: " + context.id); }
try{ context.doTask();} catch(e){ throw new Error("load error: " + context.id); }
}
};
context.start = function(timing) {
if(context.id && context.id!=null)
context.stop();
context.cnt=0;
context.id=setInterval(context.interval,timing);
};
context.stop = function() {
var _id = context.id;
clearInterval(context.id);
context.id=null;
};
context.start(miliseconds ? miliseconds : 100);
};
</SCRIPT>