HTML DOM Viewer

说明:用来查看DOM的工具,可以当作手册来用,也可以用来Debug,很方便的说
把代码copy到要调试的页面中,浏览时点击DOM Tester链接就会打开DOM查看,双击展开对象,右边的文本框里显示的是属性值,修改文本框会改变对应的属性,用来调试配色什么的还是满方便的说....呵呵
其实代码本身没什么技术含量,核心就是用 for in 语句来取对象的属性而已,要说有什么亮点.....嗯......不知道窗口间的函数调用算不算......
-+-+-+-+-+-+-+-+-+-+偶是传说中的无敌分割线-+-+-+-+-+-+-+-+-+-+
1/21更新
俺这两天在研究兼容性,所以就把代码重写了下,现在支持IE5.0+ & FF 1.5.01
用这个可以明显看出FF与IE的不同,呵呵

domWin="";
function showDOM(){
try{
domWin=open("");
domWin.opener=top;
domWin.document.close();
try{
domWin.moveTo(0,0);
domWin.resizeTo(screen.availWidth,screen.availHeight);
}catch(e){}
initDOMWin();
expandLevels(1);
}catch(e){alert(e);}
}

function initDOMWin(){
//set body style
with(domWin.document.body.style){
padding=0;
margin=0;
fontSize=12;
fontFamily="Arial";
borderWidth=0;
backgroundColor="#FFF";
color="#444";
cursor="default";
overflow="auto";
}

//insert a table
var theD=domWin.document.createElement("TABLE");
with(theD.style){
width="99%";
height="99%";
fontSize=12;
fontFamily="Arial";
borderWidth=0;
backgroundColor="#FFF";
color="#444";
cursor="default";
}
domWin.document.body.appendChild(theD);

//insert the first row to display the object's location
var theR=theD.insertRow(theD.rows.length);
var theC=theR.insertCell(theR.cells.length);
theC.colSpan=2;
with(theC.style){
height="20px";
borderWidth=1;
borderColor="#000";
borderStyle="solid";
paddingLeft=10;
}
theC.id="oIDPath";
theC.innerHTML="top";

//insert the main row
theR=theD.insertRow(theD.rows.length);
//insert the left cell to display the tree
theC=theR.insertCell(theR.cells.length);
with(theC.style){
width=parseInt(domWin.document.body.clientWidth*0.8);
height="100%";
fontSize=12;
fontFamily="Arial";
borderWidth=0;
cursor="default";
}
theD=domWin.document.createElement("DIV");
with(theD.style){
width="100%";
height=domWin.document.body.clientHeight-38;
overflow="auto";
fontSize=12;
fontFamily="Arial";
cursor="default";
}
theC.appendChild(theD);

//insert the root-node element
addDOMItem(theD,"top","top").id="tRoot";

//insert the textarea to display the attribute
theC=theR.insertCell(theR.cells.length);
with(theC.style){
width="auto";
height="99%";
fontSize=12;
fontFamily="Arial";
borderWidth=0;
verticalAlign="top";
cursor="default";
}
theD=domWin.document.createElement("textarea");
with(theD.style){
width="100%";
height=domWin.document.body.clientHeight-108;
overflow="auto";
color="#444";
cursor="default";
}
theD.id="txtAttr";
theD.value="";
theD.onchange=setAtt;
theC.appendChild(theD);

theD=domWin.document.createElement("input");
with(theD.style){
width="69%";
height=20;
borderWidth=1;
color="#444";
cursor="default";
}
theD.type="button";
theD.value="Expand levels:";
theD.onclick=expandLevels;
theC.appendChild(theD);
theD=domWin.document.createElement("input");
with(theD.style){
width="28%";
height=21;
color="blue";
}
theD.value=2;
theC.appendChild(theD);
}

function addDOMItem(parentNode,name,oID,oType){
oType=oType?oType:"object";
var strPreTemp="

  • ";
    var theD=domWin.document.createElement("DIV");
    with(theD.style){
    width="auto";
    height="16px";
    overflow="visible";
    fontSize=12;
    fontFamily="Arial";
    paddingLeft=5;
    paddingRight=10;
    paddingTop=1;
    paddingBottom=0;
    borderColor="#FFF";
    borderWidth=1;
    borderStyle="solid";
    backgroundColor="#FFF";
    color="#444";
    cursor="default";
    switch(oType){
    case "object":
    listStyle="circle";
    break;
    case "attribute":
    listStyle="square";
    break;
    case "event":
    listStyle="";strPreTemp="";
    break;
    }
    }
    theD.onmouseover=domItem_onmouseover;
    theD.onmouseout=domItem_onmouseout;
    theD.onclick=domItem_onclick;
    theD.expand=theD.ondblclick=domItem_ondblclick;
    theD.onselectstart=cancelAll;
    theD.onselect=cancelAll;
    theD.innerHTML=strPreTemp+name;
    theD.oID=oID;

    return(parentNode.appendChild(theD));

    }

    function domItem_onmouseover(){
    with(this.style){
    borderColor="#777";
    borderStyle="solid";
    backgroundColor="#EAEAF9";
    color="#000";
    paddingLeft=4;
    paddingRight=11;
    paddingTop=0;
    paddingBottom=1;
    }
    }

    function domItem_onmouseout(){
    with(this.style){
    borderColor="#FFF";
    borderStyle="solid";
    backgroundColor="#FFF";
    color="#444";
    paddingLeft=5;
    paddingRight=10;
    paddingTop=1;
    paddingBottom=0;
    }
    }

    function domItem_onclick(){
    try{
    domWin.document.all.oIDPath.innerHTML=this.oID;
    domWin.document.all.txtAttr.value=eval(domWin.document.all.oIDPath.innerHTML);
    }catch(e){}
    }

    function domItem_ondblclick(){
    try{
    var theO=eval(this.oID);
    if(typeof(theO)!="object"){return(false);}
    if(this.nextSibling){
    if(this.nextSibling.getAttribute("type")=="sub"){
    this.nextSibling.style.display=this.nextSibling.style.display=="block"?"none":"block";
    return(false);
    }
    }
    var theD=domWin.document.createElement("DIV");
    with(theD.style){
    paddingLeft=10;
    marginLeft=10;
    paddingTop=paddingBottom=4;
    borderLeftColor="#999";
    borderLeftStyle="dotted";
    borderLeftWidth=1;
    display="block";
    }

    theD.setAttribute("type","sub");
    this.parentNode.insertBefore(theD,this.nextSibling);
    var aryO=new Array();//sub objects
    var aryA=new Array();//attributes
    var aryE=new Array();//events
    for(var i in theO){
    try{
    if(i.indexOf("on")==0){
    aryE[aryE.length]=i;
    }else{
    try{
    if(typeof(theO[i])=="object"){
    aryO[aryO.length]=i;
    }else{
    aryA[aryA.length]=i;
    }
    }catch(e){
    aryO[aryO.length]=i;
    }
    }
    }catch(e){}
    }
    aryO.sort();
    aryE.sort();
    aryA.sort();
    for(var i=0;i5)?1:intLevels;
    var theObj=domWin.document.all.tRoot;
    var curLevel=1;
    while(curLevel>0&&theObj){
    try{theObj.expand();}catch(e){alert(e);return(false);}
    if(theObj.nextSibling){
    if(theObj.nextSibling.getAttribute("type")=="sub"){
    if(theObj.nextSibling.childNodes.length>0&&curLevel
    test DOM

    [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  • (0)

    相关推荐

    • HTML DOM Viewer

      说明:用来查看DOM的工具,可以当作手册来用,也可以用来Debug,很方便的说 把代码copy到要调试的页面中,浏览时点击DOM Tester链接就会打开DOM查看,双击展开对象,右边的文本框里显示的是属性值,修改文本框会改变对应的属性,用来调试配色什么的还是满方便的说....呵呵 其实代码本身没什么技术含量,核心就是用 for in 语句来取对象的属性而已,要说有什么亮点.....嗯......不知道窗口间的函数调用算不算...... -+-+-+-+-+-+-+-+-+-+偶是传说中的无敌分

    • DS-SDK封装ThreeJS的三维场景核心库Viewer

      目录 正文 一.ThreeJS-ES6库引入 二.初始化渲染器 三.初始化相机 四.初始化场景 五.初始化鼠标控制器 六.灯光初始化 七.全局渲染的函数-逐帧获取页面大小 八.全局动画函数 九.销毁页面 正文 viewer核心库的封装主要是针对threejs场景进行初始封装,以便多项目复用.具体细节我就不多写了,网上一大堆,但是我发现网上的例子都比较雷同,所以我的这一篇文档会着重从我做过的项目上遇到的一些问题来具体描写,详细请看第七.第八小节,主要是第一我们真实项目中,其实你的渲染页面不是整个页

    • Angular.JS通过指令操作DOM的方法

      在指令而非在控制器中操作DOM 相信大家在页面处理中,难免会遇到操作DOM的情况,在AngularJS中,对DOM的操作是在指令而非控制器中完成的. AngularJS强调隔离的思想:把复杂的逻辑和操作放在指令或服务中,控制器作为视图和$scope之间的桥梁,仅仅用来存储数据模型. jqLite 为了便于DOM操作,AngularJS内部封装了angular.element,如果现有项目中已经引入的jQuery,angular.element相当于jQuery函数的别名,否则,angular.e

    • AngularJS HTML DOM详解及示例代码

      以下指令可用于应用程序数据绑定到HTML DOM元素的属性. S.No. 名称 描述 1 ng-disabled 禁用一个给定的控制 2 ng-show 显示一个给定的控制 3 ng-hide 隐藏在给定的控制 4 ng-click 表示AngularJS click事件  ng-disabled 指令 添加ng-disabled属性到一个HTML按钮,通过它的模型.该模型绑定到复选框,看看以下变化. <input type="checkbox" ng-model="e

    • DOM浏览器(方便需要dom操作的朋友)

      Open a folder view, launch this application, click on init, it detects all instances. Just drill-down to see the properties of the objects recursively.You can now update properties and invoke methods on running instances ! File Name : DOM_Explorer.ht

    • javascript YUI 读码日记之 YAHOO.util.Dom - Part.4

      var getXY = function() {     // 判断是否是 IE     if (document.documentElement.getBoundingClientRect) {         // 注1         return function(el) {             var box = el.getBoundingClientRect(); var rootNode = el.ownerDocument;             return [box.

    • Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3

      var patterns = {     HYPHEN: /(-[a-z])/i,     ROOT_TAG: /^body|html$/i }; var toCamel = function(property) {     // 如果没有 -[a-z] 字母,则直接返回     if ( !patterns.HYPHEN.test(property) ) {         return property;     } // 如果有缓存,直接返回替换后的值     if (propertyCa

    • Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0

      batch: function(el, method, o, override) {     // 让 el 始终为 HTMLElement     el = (el && (el.tagName || el.item)) ? el : Y.Dom.get(el); if (!el || !method) {         return false;     } //  确定返回的对象     var scope = (override) ? o : window; // 看起来是个 H

    • YUI 读码日记之 YAHOO.util.Dom - Part.1

      先绕开头部很多的 if...else (其实就是定义 toCamel 与 getStyle 两个函数) - 由于浏览器的实现不统一,才造成如此麻烦的情况,回头可以聊聊这些代码. 下面我们在 YAHOO.util.Dom 类中看看有哪些宝藏.目前思想已经逐步的分裂,我看见个函数说个函数. // 基本上可以认为是 document.getElementById 的翻版 get: function(el) {     // 如果已经是 HTMLElement ,那么就直接返回     if (el &

    • Gird组件 Part-3:范例RSSFeed Viewer

      原文地址 文章日期:2006/09/04 新组件Gird包含了许多的类和继承方法.如果读者不是太熟悉的面向对象开发的话,可能会对一个变量如何从某个类得到继承的方法感到困惑,用起GIRD来感到困难.在YAHOO.ext.gird包中,大多数类是设计成为"即插即用plug and play"的,可扩展的extended和可自定义的customized,能以最小量的代码插入轻松到web程序中. 要测试和创建一个实现gird的范例,我决定做一个简单的,只有一页的RSS种子采集器RSS Feed

    随机推荐