J
jianhua
$ cat index.html
<html>
<head>
<script src="ajax.js" type="text/javascript"></script>
</head>
<body>
<a onclick="ajax('div1', 'b.html'); return false;" href="#">
click to load page with ajax
</a>
<div id="div1"></div>
</body>
</html>
$
$ cat b.html
msg1<script type="text/javascript">alert("msg2");</script>msg3<script
type="text/javascript">alert("msg4");</script>msg5
$
$ cat ajax.js
function ajax(elmId, uri)
{
var xhr = new XMLHttpRequest();
if (!xhr) return false;
xhr.open("post", uri, true);
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
if (xhr.status == 200){
var elm = document.getElementById(elmId);
var org = xhr.responseText;
var low = xhr.responseText.toLowerCase();
var LEN = low.length;
var SCR1 = "<script";
var SCR2 = "</script>";
var pos;
for (var i = 0; i != LEN && (pos = low.indexOf(SCR1, i)) != -1
{
elm.innerHTML += org.substring(i, pos);
i = pos + SCR1.length;
pos = low.indexOf(">", i);
if (pos == -1) break;
i = pos + ">".length;
pos = low.indexOf(SCR2, i);
if (pos == -1) break;
var txt = document.createTextNode(
org.substring(i, pos));
i = pos + SCR2.length;
var scr = document.createElement("script");
scr.type = "text/javascript";
scr.appendChild(txt);
elm.appendChild(scr);
}
elm.innerHTML += org.substring(i);
} else {
document.getElementById(elmId).innerHTML =
xhr.status + " " + xhr.statusText;
}}}
xhr.send();
return false;
}
$
<html>
<head>
<script src="ajax.js" type="text/javascript"></script>
</head>
<body>
<a onclick="ajax('div1', 'b.html'); return false;" href="#">
click to load page with ajax
</a>
<div id="div1"></div>
</body>
</html>
$
$ cat b.html
msg1<script type="text/javascript">alert("msg2");</script>msg3<script
type="text/javascript">alert("msg4");</script>msg5
$
$ cat ajax.js
function ajax(elmId, uri)
{
var xhr = new XMLHttpRequest();
if (!xhr) return false;
xhr.open("post", uri, true);
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
if (xhr.status == 200){
var elm = document.getElementById(elmId);
var org = xhr.responseText;
var low = xhr.responseText.toLowerCase();
var LEN = low.length;
var SCR1 = "<script";
var SCR2 = "</script>";
var pos;
for (var i = 0; i != LEN && (pos = low.indexOf(SCR1, i)) != -1
{
elm.innerHTML += org.substring(i, pos);
i = pos + SCR1.length;
pos = low.indexOf(">", i);
if (pos == -1) break;
i = pos + ">".length;
pos = low.indexOf(SCR2, i);
if (pos == -1) break;
var txt = document.createTextNode(
org.substring(i, pos));
i = pos + SCR2.length;
var scr = document.createElement("script");
scr.type = "text/javascript";
scr.appendChild(txt);
elm.appendChild(scr);
}
elm.innerHTML += org.substring(i);
} else {
document.getElementById(elmId).innerHTML =
xhr.status + " " + xhr.statusText;
}}}
xhr.send();
return false;
}
$