evaluator.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<!-- evaluator.html"
     From "JavaScript Bible" 6th Edition by Danny Goodman
     http://www.dannyg.com
     Copyright 2007 Danny Goodman. All Rights Reserved.
-->

<html id="myHTML">
<head id="myHead">
<title id="myTitle">The Evaluator</title>
<style id="myStyle" disabled="disabled" type="text/css">
#myP {font-weight:bold}
em {color:green}
</style>
<script id="myScript" type="text/javascript">
// global variables to play with
var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
var hasNNSecurity = (typeof netscape != "undefined");
var rng; // W3C DOM Range

function init() {
   if (document.createRange) {
      rng = document.createRange();
      rng.setStartBefore(document.body);
      rng.setEndAfter(document.body);
   }
}

function doIt(form){
    if (form.security.checked && hasNNSecurity) {
        netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead")
        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
        netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite")
    }

    form.output.value = eval(form.input.value)
    
    if (form.security.checked && hasNNSecurity) {
        netscape.security.PrivilegeManager.revertPrivilege("UniversalBrowserRead")
        netscape.security.PrivilegeManager.revertPrivilege("UniversalBrowserWrite")
        netscape.security.PrivilegeManager.revertPrivilege("UniversalXPConnect");
    }
    if (document.compatMode) {
        status = "Mode:" + document.compatMode;
    }
}

function sortText(a, b) {
    return ((a.name < b.name) ? -1 : 1)
}

function showProps(form) {
    var objName = form.inspector.value
    var obj = eval(objName)
    var msg1 = "PROPERTIES\n", msg2 = "\nMETHODS\n"
    var delim = (form.tabbed.checked) ? String.fromCharCode(9) : "="
    var data = new Array()
    if (form.security.checked && hasNNSecurity) {
        netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead")
        netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite")
        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    }

    for (var i in obj) {
        status = i
        // work around bug in IE
        switch (i) {
            case "domain" :
                data[data.length] = {name:(objName + "." + i), value:"unknown", type:"unknown"}
                break
            case "parentRule" :
                data[data.length] = {name:(objName + "." + i), value:"unknown", type:"unknown"}
                break
            default :
                data[data.length] = {name:(objName + "." + i), value:obj[i], type:typeof obj[i]}
        }
    }
    data.sort(sortText)
    for (var j=0; j < data.length; j++) {
        if (data[j].type == "function") {
            if (form.tabbed.checked) {
                msg2 += data[j].name + delim + data[j].name + "()\n"
            } else {
                msg2 += data[j].name + "=function " + data[j].name + "()\n"
            }
        } else {
            if (form.tabbed.checked) {
                msg1 += data[j].name + delim + data[j].value + delim + " |" + data[j].type +"|\n"
            } else {
                msg1 += data[j].name + "=" + data[j].value + " |" + data[j].type +"|\n"
            }
        }
    }
    if (form.security.checked && hasNNSecurity) {
        netscape.security.PrivilegeManager.revertPrivilege("UniversalBrowserRead")
        netscape.security.PrivilegeManager.revertPrivilege("UniversalBrowserWrite")
        netscape.security.PrivilegeManager.revertPrivilege("UniversalXPConnect");
    }
    form.output.value = msg1 + msg2
    if (typeof form.output.scrollTop != "undefined") {
        form.output.scrollTop = 0;
    }
}

function evalIfReady(form, evt) {
   evt = (evt) ? evt : (window.event) ? window.event : "";
   if (evt) {
      var theKey = (evt.which) ? evt.which : evt.keyCode;
      if (theKey == 13) {
         doIt(form);
         return false;
      }
   }
   return true;
}

function showPropsIfReady(form, evt) {
   evt = (evt) ? evt : (window.event) ? window.event : "";
   if (evt) {
      var theKey = (evt.which) ? evt.which : evt.keyCode;
      if (theKey == 13) {
         showProps(form);
         return false;
      }
   }
   return true;
}

function walkChildNodes(objRef, n) {
    var obj
    if (objRef) {
        if (typeof objRef == "string") {
            obj = document.getElementById(objRef)
        } else {
            obj = objRef
        }
    } else {
        obj = (document.body.parentElement) ?
            document.body.parentElement : document.body.parentNode
    }
    var output = ""
    var indent = ""
    var i, group, txt
    if (n) {
        for (i = 0; i < n; i++) {
            indent += "+---"
        }
    } else {
        n = 0
        output += "Child Nodes of <" + obj.tagName
        output += ">\n=====================\n"
    }
    group = obj.childNodes
    for (i = 0; i < group.length; i++) {
        output += indent
        switch (group[i].nodeType) {
            case 1:
                output += "<" + group[i].tagName
                output += (group[i].id) ? " ID=" + group[i].id : ""
                output += (group[i].name) ? " NAME=" + group[i].name : ""
                output += ">\n"
                break
            case 3:
                txt = group[i].nodeValue.substr(0,15)
                output += "[Text:\"" + txt.replace(/[\r\n]/g,"<cr>")
                if (group[i].nodeValue.length > 15) {
                    output += "..."
                }
                output += "\"]\n"
                break
            case 8:
                output += "[!COMMENT!]\n"
                break
            default:
                output += "[Node Type = " + group[i].nodeType + "]\n"
        }
        if (group[i].childNodes.length > 0) {
            output += walkChildNodes(group[i], n+1)
        }
    }
    return output
}

function walkChildren(objRef, n) {
    var obj
    if (objRef) {
        if (typeof objRef == "string") {
            obj = document.getElementById(objRef)
        } else {
            obj = objRef
        }
    } else {
        obj = document.body.parentElement
    }
    var output = ""
    var indent = ""
    var i, group
    if (n) {
        for (i = 0; i < n; i++) {
            indent += "+---"
        }
    } else {
        n = 0
        output += "Children of <" + obj.tagName
        output += ">\n=====================\n"
    }
    group = obj.children
    for (i = 0; i < group.length; i++) {
        output += indent + "<" + group[i].tagName
        output += (group[i].id) ? " ID=" + group[i].id : ""
        output += (group[i].name) ? " NAME=" + group[i].name : ""
        output += ">\n"
        if (group[i].children.length > 0) {
            output += walkChildren(group[i], n+1)
        }
    }
    return output
}

</script>
</head>

<body bgcolor="white" οnlοad="init()">
  <form οnsubmit="return false">
    <fieldset id="myFIELDSET">
      <legend id="myLEGEND">The Evaluator</legend>

      <p>Enter an expression to evaluate (<input type="checkbox"
      name="security" />Use NN Code Base Security):<br />
      <input type="text" name="input" size="80" οnkeypress=
      "return evalIfReady(this.form, event)" /> <input type=
      "button" value="Evaluate" οnclick="doIt(this.form)" /></p>

      <p>Results: (<input type="checkbox" name="tabbed" checked>Use tab delimiters)<br />
      <textarea name="output" cols="80" rows="6" wrap="virtual"></textarea>
      </p>

      <p>Enter a reference to an object:<br />
      <input type="text" name="inspector" size="80" hidefocus="hidefocus"
      οnkeypress="return showPropsIfReady(this.form, event)" />
      <input type="button" value="List Properties" οnclick=
      "showProps(this.form)" /></p>
    </fieldset>
  </form><!--
     BEGIN SAMPLE HTML ELEMENTS
  -->

  <p id="myP">Now is the time for <em id="myEM">all</em> good men
  to come to the aid of their country.</p>

  <table id="myTable" cellpadding="10" border="2">
    <caption id="myCap">
      This is a table caption.
    </caption>

    <colgroup id="myCol" span="3"></colgroup>

    <thead id="myTHEAD">
      <tr>
        <th><font id="myFont" size="4">Quantity</font></th>

        <th id="myTH">Description</th>

        <th>Price</th>
      </tr>
    </thead>

    <tbody bgcolor="salmon" id="myTBODY">
      <tr align="center">
        <td width="200">4</td>

        <td id="myTD" style="filter:blur(add=true, direction=225)">
        Primary Widget</td>

        <td>$14.96</td>
      </tr>

      <tr id="myTR">
        <td>10</td>

        <td style="filter:blur(add=true, direction=225)">Secondary
        Widget</td>

        <td id="myTD2">$114.96</td>
      </tr>
    </tbody>
  </table>

  <form name="myForm2" id="myForm2">
    <select id="mySelect" name="aSelect" multiple="multiple" size="4">
      <option value="Larry Fine">
        Larry
      </option>

      <option>
        Moe
      </option>

      <option>
        Curly
      </option>
    </select>

    <p><input type="checkbox" id="myCheckbox" />Sample Checkbox</p>

    <fieldset id="form2set1">
      <legend id="form1set1legend">Choose the Desired
      Performance</legend> <input type="radio" name="speed" id=
      "speed1" /><label for="speed1">Fastest (lower
      quality)</label><br />
      <input type="radio" name="speed" id="speed2" /><label for=
      "speed2">Slower (best quality)</label>
    </fieldset>
  </form><br />

  <div id="myDIV" style=
  "position:absolute; top:350; left:550; width:60px; border:5px ridge green; padding:5px; margin:5px">
  This is a positioned element with a whole bunch of text in it.
  </div>

  <p><img name="myIMG" src="desk1.gif" id="myIMG" alt="" /></p>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值