/**
*以DocumentFragment(即一个document)返回可见区域
* return DocumentFragment
* yuanjq
**/
var VDFragment = {};
VDFragment.Document = function(iWindow){
this.oFrag = document.createDocumentFragment();
this.Init = function(){
var r1 = iWindow.document.body.createTextRange();
var r2 = iWindow.document.body.createTextRange();
if(r2.htmlText=="") return false;
try{
r2.moveToPoint(0, 0);
r1.setEndPoint("StartToStart", r2);
//html头中是否有doctye时引起的html版本问题修正
if(iWindow.document.documentElement){
var offsetHeight = iWindow.document.documentElement.offsetHeight - 5;//此处减(>=1)才能实现取到可见区域的内容,原因未查明
r2.moveToPoint(iWindow.document.documentElement.offsetWidth,offsetHeight);
}else{
var offsetHeight = iWindow.document.body.offsetHeight - 5;//此处减(>=1)才能实现取到可见区域的内容,原因未查明
r2.moveToPoint(iWindow.document.body.offsetWidth,offsetHeight);
}
r1.setEndPoint("EndToEnd", r2);
}catch(e){
//window.status = e.message;
}
var htmlText = r1.htmlText;
var op=document.createElement("<DIV id='frag_content'></DIV>");
op.innerHTML = htmlText;
this.oFrag.appendChild(op);
return this.oFrag;
}
//提取给定html标签的对象元素数组
this.getElementsByTagName = function(TagName){
return this.oFrag.getElementsByTagName(TagName);
}
//提取给定id的对象元素
this.getElementById = function(id){
return this.oFrag.getElementById(id);
}
return this.Init();
}
使用如下
var documentFragment = new VDFragment.Document(window);
if(documentFragment && documentFragment.getElementById("frag_content")){
var imgs = documentFragment.getElementsByTagName("img");
alert(imgs.length);
}