prototype的Ajax.Updater可以用来更新一段html,但在更新带javascript的html时,需要注意几个问题
一. 需要在Ajax.Updater添加参数 evalScripts : true
二. javascript代码块要使用下面的形式
showHi = function() {
alert('Hi');
}
而不能使用下面的形式
function showHi() {
alert('Hi');
}
三. 注意javascript代码块中不能使用 <!-- //--> 标记,否则 IE 会出错,firefox没问题。
下面是个例子, 在a1.jsp中加载a2.jsp,
a1.jsp代码
<html>
<head>
<title>Insert title here</title>
<script type="text/javascript" src="prototype-150.js"></script>
<script type="text/javascript">
function ajax() {
var url = "/MyWebApp/a2.jsp";
var myajax = new Ajax.Updater(
{success: 'mydiv'},
url,
{
asynchronous:true,
method: 'get',
evalScripts:true
}
);
}
</script>
</head>
<body>
<a href="#" onclick="ajax()">click here1</a>
<div id="mydiv"></div>
</body>
</html>
a2.jsp代码
<script type="text/javascript">
showHi = function() {
alert('Hi');
}
sayHello = function() {
alert('Hello');
}
</script>
<a href="#" onclick="showHi();">showHi</a>
<script type="text/javascript">
sayHello();
</script>