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>