/***************************************************
* 阿贾克斯页面获取器 - 由 JavaScript Kit (www.javascriptkit.com)
**************************************** ***********/
var ajaxpagefetcher={
loadingmessage: "正在加载页面,请稍候...",
exfilesadded: "",
connect:function(containerid, pageurl,bustcache, jsfiles, cssfiles){
var page_request = false
varbustcacheparameter=""
if (window.XMLHttpRequest) // if Mozilla, IE7, Safari 等
page_request = new XMLHttpRequest()
else if (window.ActiveXObject){ //如果IE6或以下
try {
page_request = new ActiveXObject("Msxml2.XMLHTTP")
}
catch (e){
try{
page_request = new ActiveXObject("Microsoft .XMLHTTP")
}
catch (e){}
}
}
else
返回 false
var ajaxFriendlyurl=pageurl.replace(/^http:// [^/] //i, "http://" window.location.hostname "/")
page_request.onreadystatechange=function(){ajaxpagefetcher.loadpage(page_request, containerid, pageurl, jsfiles, cssfiles)}
if (bustcache) //如果清除外部页面缓存
bustcacheparameter=(ajaxfriendurl.indexOf("?")!=-1)? "&" new Date().getTime() : "?" new Date().getTime()
document.getElementById(containerid).innerHTML=ajaxpagefetcher.loadingmessage //显示“正在获取页面消息”
page_request.open('GET', ajaxfriendurlbustcacheparameter, true)
page_request.send(null)
},
loadpage:function(page_request, containerid, pageurl, jsfiles, cssfiles){
if (page_request.readyState == 4 && (page_request.status== 200 || window.location.href.indexOf("http")==-1)){
document.getElementById(containerid).innerHTML=page_request.responseText
for (var i=0; ithis.loadjscssfile(jsfiles[i], "js")
for (var i=0; ithis.loadjscssfile(cssfiles[i] , "css")
this.pageloadaction(pageurl) //调用自定义“onpageload”事件
}
},
createjscssfile:function(filename, filetype){
if (filetype=="js"){ //如果文件名是外部 JavaScript 文件
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename)
}
else if (filetype=="css"){ //如果 filename 是外部 CSS 文件
var fileref=document.createElement("链接")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", filename)
}
return fileref
},
loadjscssfile:function(filename, filetype){ //加载或替换(如果已经存在)外部 .js 和 .css 文件
if (this .exfilesadded.indexOf("[" filename "]")==-1){ //如果需要加载的文件尚未加载
var newelement=this.createjscssfile(filename, filetype)
document.getElementsByTagName ("head")[0].appendChild(newelement)
this.exfilesadded ="[" filename "]" //记住此文件已添加
}
else{ //如果文件已添加已经加载(替换/刷新它)
var targetelement=(filetype=="js")? “脚本”:(文件类型==“css”)? "link" : "none" //使用
var targetattr=(filetype=="js") 确定创建节点列表的元素类型? “src”:(文件类型==“css”)? "href" : "none" //确定要测试的相应属性
var allsuspects=document.getElementsByTagName(targetelement)
for (var i=allsuspects.length; i>=0; i--){ / /在节点列表中向后搜索要删除的匹配元素
if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=- 1){
var newelement=this.createjscssfile(文件名, 文件类型)
allsuspects[i].parentNode.replaceChild(newelement, allsuspects[i])
}
}
}
},
pageloadaction:function(pageurl){
this.onpageload(pageurl) //在获取/加载 ajax 页面时调用自定义 onpageload() 函数
},
onpageload:function(pageurl){
//默认不执行任何操作
},
load:function(containerid, pageurl,bustcache, jsfiles, cssfiles){
var jsfiles =(jsfiles类型==“未定义”|| jsfiles ==“”)? [] : jsfiles
var cssfiles=(typeof cssfiles=="未定义" || cssfiles=="")? [] : cssfiles
this.connect(containerid, pageurl,bustcache, jsfiles, cssfiles)
}
} //结束对象
//用法示例:
//1) ajaxpagefetcher.load("mydiv", "content.htm", true)
//2) ajaxpagefetcher.load("mydiv2", "content.htm", true, ["external.js"] )
//3) ajaxpagefetcher.load("mydiv2", "content.htm", true, ["external.js"], ["external.css"])
//4) ajaxpagefetcher.load ("mydiv2", "content.htm", true, ["external.js", "external2.js"])
//5) ajaxpagefetcher.load("mydiv2", "content.htm", true, "", ["external.css", "external2.css"])