JavaScript Professional Projects [摘录]

如何处理动态语言(Python / JS)的“隐形”调用链? 本文揭示动态语言(Python/JS)中静态AST解析导致调用链“断链”的核心问题,提出通过运行时追踪补全图谱的解决方案。基于Code-Graph-RAG的cgr trace机制,分别利用pytest插件与V8 Profiler捕获真实调用路径,将动态边合并至静态图谱,并在权重体系中提升动态边优先级。实践表明,该方法可显著提升图谱覆盖率,实现“结构+行为”双视角理解代码,为MCP与Rerank系统提供可靠支持。 阅读详情

原贴地址:http://blog.youkuaiyun.com/smartkernel/archive/2007/07/28/1713091.aspx

www.SmartKernel.com

【书名    】:JavaScript Professional Projects
【出版社  】:Premier Press
【作者    】:Paul Hatcher、John Gosney
【评价    】:★★★★★☆☆☆☆☆
【正文    】:

----------------------------------------------------------------------------------------------------
0001:
    lightweight
    add dynamic effects to your Web pages
    HTML (Hypertext Markup Language)
    far more processing power
    JavaScript is executed in the client browser
----------------------------------------------------------------------------------------------------
0002:
    居中显示的文本标志:
    <center>
      <font size=6>JavaScript Professional Projects</font><br>
      <font size=4>Chapter 1: "Hello World!!" Example</font>
    </center>
----------------------------------------------------------------------------------------------------
0003:
    JavaScript is only run on the client's computer
----------------------------------------------------------------------------------------------------
0004:
    When creating an identifier, you should remember the following very important guidelines
----------------------------------------------------------------------------------------------------
0005:
    JavaScript is a case-sensitive language
----------------------------------------------------------------------------------------------------
0006:
    interpreter     编译器
----------------------------------------------------------------------------------------------------
0007:
    Reserved Key Words:
    见图0007
----------------------------------------------------------------------------------------------------
0008:
    Comments    注释
----------------------------------------------------------------------------------------------------
0009:
    Abstract Data Types:
    Number
    String
    Boolean
    null
    undefined
    NaN
----------------------------------------------------------------------------------------------------
0010:
    String类型的使用:
    var str = new String("11111111111111111");
    document.write(str.substring(1,3));
----------------------------------------------------------------------------------------------------
0011:
    判断是不是数字或者能转化为数字:document.write( isNaN( "123" ) ? "is not" : "is" );
----------------------------------------------------------------------------------------------------
0012:
    清除一个不使用对象的方法:
    var myDate = new Date();
    delete( myDate );
    myDate = null;
----------------------------------------------------------------------------------------------------
0013:
    函数也是一个对象:document.write(typeof(parseInt));返回的是function
----------------------------------------------------------------------------------------------------
0014:
    函数的作用域问题:
    <script language=javascript>
        var a = "10";
        function fun1()
        {
            var b = "20";
            c = "30";
            try
            {
                document.write(a);//可以访问,虽然使用了var,但是在function外部声明
            }
            catch(e)
            {
                document.write("a");
            }
            document.write("<br>");
        }
        function fun2()
        {
            try
            {
                document.write(b);//不可以访问,因为使用了var,且在function内部声明
            }
            catch(e)
            {
                document.write("b");
            }
            document.write("<br>");
            try
            {
                document.write(c);//可以访问,不使用var声明,则是全局变量
            }
            catch(e)
            {
                document.write("c");
            }
            document.write("<br>");
        }
        fun1();
        fun2();
    </script>
----------------------------------------------------------------------------------------------------
0015:
    JavaScript是自动垃圾收集的。
----------------------------------------------------------------------------------------------------
0016:
    获得当前对象的引用也是用:this
----------------------------------------------------------------------------------------------------
0017:
    switch的使用:
    var n = 12;
    switch( n )
    {
      case 0:
        document.write( "zero" );
        break;
      case 12:
        document.write( "One dozen" );
        break;
      case 13:
        document.write( "Baker's dozen" );
        break;
      default:
        document.write( "Some number" );
        break;
    }
----------------------------------------------------------------------------------------------------
0018:
    循环遍历二维数组:
    var myArray = new Array();
    var myArrayChild1 = new Array();
    myArrayChild1[0] = "11";
    myArrayChild1[1] = "12";
    myArrayChild1[2] = "13";
    var myArrayChild2 = new Array();
    myArrayChild2[0] = "21";
    myArrayChild2[1] = "22";
    var myArrayChild3 = new Array();
    myArrayChild3[0] = "31";
    myArrayChild3[1] = "32";
    myArrayChild3[2] = "33";
    myArrayChild3[3] = "33";
    myArray[0] = myArrayChild1;
    myArray[1] = myArrayChild2;
    myArray[2] = myArrayChild3;
    for(inArray in myArray)
    {
        document.write("---------------");
        document.write("<br>");
        for(i in myArray[inArray])
        {
            document.write(i);
            document.write("<br>");
        }
    }
----------------------------------------------------------------------------------------------------
0019:
    Array对象支持列表和堆栈的逻辑:
    pop()           返回并删除数组最后一个元素
    push(value)     在数组的最后增加一个元素
    shift()         返回并删除数组的第一个元素
    unshift(value)  在数组的开始位置插入一个元素
----------------------------------------------------------------------------------------------------
0020:
    Array对象支持sort方法:
    var theDays = new Array( "2Sun", "1Mon", "3Tues", "5Wed","7Thurs", "6Fri", "4Sat" );
    theDays.sort(compare);
    function compare(a,b)
    {
        var l = new Number(a.substring(0,1));//字符的索引位置从0开始
        var r = new Number(b.substring(0,1));
        return( l - r );
    }
    document.write(theDays);
----------------------------------------------------------------------------------------------------
0021:
    扩展Array的方法:
    function insertAt( index, value )
    {
      var part1 = this.slice( 0, index );
      var part2 = this.slice( index );
      part1.push( value );
      return( part1.concat( part2 ) );
    }
    function removeAt( index )
    {
      var part1 = this.slice( 0, index );
      var part2 = this.slice( index );
      part1.pop();
      return( part1.concat( part2 ) );
    }
    Array.prototype.insertAt = insertAt;
    Array.prototype.removeAt = removeAt;     
    var myArray = new Array();
    myArray[0] = 1;
    myArray[1] = 2;
    myArray[2] = 3;
    myArray[3] = 4;
    myArray[4] = 5;
    myArray[5] = 6;
    var myArray2 = myArray.insertAt(3,10);
    var myArray3 = myArray2.removeAt(4);
    document.write(myArray3);
----------------------------------------------------------------------------------------------------
0022:
    String的常用方法:
    var myString = new String("abcdefg");
    document.write(myString.bold()+"<BR>");//加粗
    document.write(myString.charAt(2)+"<BR>");//获得指定索引位置的一个字符
    document.write(myString.charCodeAt(2)+"<BR>");//获得指定索引位置的一个字符的编码
    document.write(myString.fontcolor("Red")+"<BR>");//颜色
    document.write(myString.fontsize(50)+"<BR>");//大小
    document.write(myString.hasOwnProperty("length")+"<BR>");//判断是否有某个属性
    document.write(myString.indexOf("cd",0)+"<BR>");//从指定位置开始查找匹配的字符组合,返回第一个符合的索引位置
    document.write(myString.italics()+"<BR>");//斜体
    document.write(myString.length+"<BR>");//长度
    document.write(myString.link("www.126.com")+"<BR>");//超联接
    document.write(myString.search("d")+"<BR>");//查找指定的字符,返回其索引位置
    document.write(myString.replace("d","M")+"<BR>");//查找指定的字符并替换为另外的字符
    document.write(myString.slice(1,4)+"<BR>");//中划线
    document.write("A"+myString.sub()+"<BR>");//右下角小字体
    document.write("A"+myString.sup()+"<BR>");//右上角小字体
    document.write(myString.substring(1,4)+"<BR>");//截取指定位置的字符串
  
    var myString2 = "How,much,wood,would,a,woodchuck,chuck?";
    var myArray = myString2.split( "," );//用字符串中的符号拆分字符串为数组
    for( i = 0 ; i < myArray.length ; i++ )
    {
        document.write( myArray[i] + "<br>" );
    }
----------------------------------------------------------------------------------------------------
0023:
    将10进制数转换为2进制数:
    function toBinary( n )
    {
      var answer = "";
      while( n != 0 )
      {
        answer = Math.abs(n % 2) + answer;
        n = parseInt( n / 2 );
      }
      if( answer.length == 0 ) answer = "0";
      return( answer );
    }
    document.write(toBinary(150));
----------------------------------------------------------------------------------------------------
0024:
    递归函数:计算阶乘
    function fun(n)
    {
        if(n == 1)
        {
            return 1;
        }
        var now = fun(n-1) * n;
        return now;
    }
    document.write(fun(5));
----------------------------------------------------------------------------------------------------
0025:
    JavaScript支持中文变量名:
    function 计算阶乘(n)
    {
        if(n == 1)
        {
            return 1;
        }
        var now = 计算阶乘(n-1) * n;
        return now;
    }
    document.write(计算阶乘(4));
----------------------------------------------------------------------------------------------------
0026:
    全局函数:

    escape:特殊字符编码
    var str = "%^*#@";
    document.write(escape(str));

    unescape:解码

    eval:动态计算语句
    var str = "var str = '----------';document.write(str.fontcolor('red'));";
    eval(str);

    isFinite:判断是不是有理数
    document.write(isFinite("111"));//true

    isNaN:判断是不是数字
    document.write(isNaN("111"));//是数字返回false,不是数字返回true

    Number:将其他类型的对象转换为数字类型,转换成功,则返回对应的数字,转换失败,则返回NaN
    var str = "1a";
    var n = new Number(str);
    document.write(n);

    parseFloat

    parseInt:
    document.write(parseInt("123","2"));//第二个参数代表进制

----------------------------------------------------------------------------------------------------
0027:
    注意:在语句的结尾输入错了";"不会给出提示信息。很容易写成":"。
----------------------------------------------------------------------------------------------------
0028:
    函数也是对象,因此函数也有属性。

    参数数组:
    function fun(a,b,c)
    {
        for(i = 0;i < fun.arguments.length;i++)
        {
            document.write(fun.arguments[i]+"<br>");
        }
        return a + b + c;
    }
    fun(1,2,3);

    调用者:
    function fun1(str)
    {
        document.write(fun1.caller);
    }
    function fun2(str)
    {
        var str2 = "";
        fun1(str);
    }
    fun2("123");

    参数长度:
    function fun(a,b,c)
    {
        document.write(fun.length);
    }
    fun(1,2,3);

    函数对象也有prototype属性:
    function fun()
    {
        document.write("-----------");
    }
    //这里是给Function增加的,而不是给fun增加的
    Function.prototype.explain = function()
    {
        document.write("本函数的作用:演示如何利用函数的prototype属性给函数添加说明");
    }
    var aFun = fun;
    aFun.explain();

    显式获得一个函数对象的引用:
    function fun()
    {
        document.write("-------------");
    }
    var myFun = fun.valueOf();
    myFun();
----------------------------------------------------------------------------------------------------
0029:
    快速设置Table不同行的颜色

    #region 代码实例
    <html>
        <head>
        <script language="JavaScript">
        <!--
             var rowNumber = 1;
             function getColor(color1,color2)
             {
               var color;
               if( rowNumber > 2 )
               {
                    rowNumber = 1;
               }
      
               if( rowNumber == 1 )
               {
                    color = color1;
               }
               else
               {
                    color = color2;
               }
               rowNumber++;
               return( color );
             }
           // -->
        </script>
        </head>
         <body>

           <table width="95%" border="0">
             <script language="JavaScript">
             <!--
                  for( i = 0 ; i < 25 ; i++ )
                  {
                    document.write( "<tr bgcolor='" + getColor("Gray","White") + "'>" );
                    document.write( "<td>第" + i + "行</td>" );
                    document.write( "</tr>" );
                  }

            // -->
            </script>
           </table>

         </body>
    </html>
    #endregion
----------------------------------------------------------------------------------------------------
0030:
    Cookie的使用:

    保存页面所有元素的值:
    function saveForm( form )
    {
      for( i = 0 ; i < form.elements.length ; i++ )
      {
        with( form.elements[i] )
        {
            if( type != "submit" && type != "button" && type != "reset" )
            {
                document.cookie = form.name + "." + name + "=" + value;
            }
        }
      }
    }

    从保存的页面值中检索键值对:
    function getCookieValue( name )
    {
        var c = document.cookie;
        var begin = c.indexOf( name );
        if( begin < 0 )
        {
            return( "" );
        }
        begin += name.length + 1;
        var end = c.indexOf( ";", begin );
        if( end == -1 )
        {
            end = c.length;
        }
        return( c.slice( begin, end ) );
    }

    #region 代码实例
    <html>
      <head>
        <title>
             JavaScript Professional Projects - Reading Cookies
        </title>

        <script language="JavaScript">
        <!--
             var now = new Date();
             now.setMonth( now.getMonth() + 1 );
             document.cookie = "expires=" + now.toGMTString();

             function saveForm( form )
             {
                for( i = 0 ; i < form.elements.length ; i++ )
                {
                  with( form.elements[i] )
                  {
                     if( type != "submit" && type != "button" && type != "reset" )
                     document.cookie = form.name + "." + name + "=" + value;
                  }
                }
             }

             function loadForm( form )
             {
               for( i = 0 ; i < form.elements.length ; i++ )
               {
                 with( form.elements[i] )

                {
                  if( type != "submit" && type != "button" && type != "reset" )
                    value = getCookieValue( form.name + "." + name );
                 }
                }
              }

              function getCookieValue( index )
              {
                var c = document.cookie;
                var begin = c.indexOf( index + "=" ) + index.length + 1;
                var end = c.indexOf( ";", begin );
                if( end == -1 ) end = c.length;
                return( c.slice( begin, end ) );
              }
            -->
            </script>

      </head>

      <body onLoad="JavaScript: loadForm( document.mailingForm );">

       <table cellspacing="4" cellpadding="4" width="65%">
         <tr>
           <td>

             <form name="mailingForm" onSubmit="JavaScript: saveForm( this );">
               <b><font size="5">Mailing Address<br></font></b>
               <br>
               <b>Last name, First name:</b><br>

               <input type="text" name="firstLine" size="36"><br>
               <b>Street/Address:</b><br>
               <input type="text" name="secondLine" size="36"><br>
               <b>City State, Zip code:</b><br>
               <input type="text" name="thirdLine" size="36">&nbsp;&nbsp;
               <input type="submit" value="Submit">
             </form>

           </td>
         </tr>
       </table>

      </body>
    </html>
    #endregion
----------------------------------------------------------------------------------------------------
0031:
    基于Array的列表:

    #region 代码实例
    function pop()
    {
       return( this.data.pop() );
    }
    function push( value )
    {
      this.data.push( value );
    }
    function insertAt( index, value )
    {
      var part1 = this.data.slice( 0, index );
      var part2 = this.data.slice( index );
      part1.push( value );
      this.data = part1.concat( part2 );
    }
    function removeAt( index )
    {
      var part1 = this.data.slice( 0, index );
      var part2 = this.data.slice( index );
      part1.pop();
      this.data = part1.concat( part2 );
    }
    function size()
    {
      return( this.data.length );
    }
    function display()
    {
      document.write( "<table border=1 cellpadding=5 cellspacing=2width=50%>" +
                       "  <tr>" +
                       "    <td>" +
                       "      <b><code>Linked List Size = " +
                                        this.size() + "</code></b>" +
                       "    </td>" +
                       "  </tr><tr>" +
                       "    <td>" );

    if( this.size() == 0 ) document.write( "No data" );
    document.write( this.data.join( "</td></tr><tr><td>" ) );
    document.write( "</td></tr></table>" );
    }
    function List()
    {
    this.data = new Array();
    this.pop = pop;
    this.push = push;
    this.size = size;
    this.display = display;
    this.insertAt = insertAt;
    this.removeAt = removeAt;
    }
    #endregion
----------------------------------------------------------------------------------------------------
0032:
    基于Array的栈:

    #region 代码实例
    function pop()
    {
      return( this.data.pop() );
    }
    function push( value )
    {
      this.data.push( value );
    }
    function size()
    {
      return( this.data.length );
    }
    function display()
    {
      document.write( "<table border=1 cellpadding=5 cellspacing=2 width=50%>" +
                        "   <tr>" +
                        "     <td>" +
                        "       <b><code>Stack - Size = " +
                                         this.size() + "</code></b>" +
                        "     </td>" +
                        "   </tr><tr>" +
                        "     <td>" );
      if( this.size() == 0 ) document.write( "No data" );
      document.write( this.data.join( "</td></tr><tr><td>" ) );
      document.write( "</td></tr></table>" );
    }
    function Stack()
    {
      this.data = new Array( 0 );
      this.pop = pop;
      this.push = push;
      this.size = size;
      this.display = display;
    }
    #endregion
----------------------------------------------------------------------------------------------------
0033:
    基于Array的队列:

    #region 代码实例
    function dequeue()
    {
      return( this.data.pop() );
    }
    function enqueue( value )
    {
      this.data.unshift( value );
    }
    function size()
    {
      return( this.data.length );
    }
    function display()
    {
      document.write( "<table border=1 cellpadding=5 cellspacing=2width=50%>" +
                        "  <tr>" +
                        "    <td>" +
                        "      <b><code>Queue Size = " +
                                         this.size() + "</code></b>" +
                        "    </td>" +
                        "  </tr><tr>" +
                        "    <td>" );

      if( this.size() == 0 ) document.write( "No data" );
      document.write( this.data.join( "</td></tr><tr><td>" ) );
      document.write( "</td></tr></table>" );
    }
    function Queue()
    {
      this.data = new Array( 0 );
      this.dequeue = dequeue;
      this.enqueue = enqueue;
      this.size = size;
      this.display = display;
    }
    #endregion
----------------------------------------------------------------------------------------------------
0034:
    Date对象的构造函数:
    var now = new Date();
    var myDate = new Date( "month dd, yyyy, hh:mm:ss" );
    var myDate = new Date( "month dd, yyyy" );
    var myDate = new Date( yy, mm, dd, hh, mm, ss );
    var myDate = new Date( yy, mm, dd );
    var myDate = new Date( milliseconds );
----------------------------------------------------------------------------------------------------
0035:
    每个window只有一个惟一的document对象。
----------------------------------------------------------------------------------------------------
0036:
    document对象:
    <form id = "myForm">
      <a id = "myA" href="www.126.com">锚定</a>
      <script language=javascript>
       document.alinkcolor = "Green";//超联接的单击后的颜色
       document.linkColor = "White";//超联接的单击前的颜色
       document.VlinkColor = "Red";//超联接的单击前的颜色
       document.write(document.anchors[0]+"<br>");//获得页面锚定指向的联接
       document.bgColor = "Black";
       document.write(document.domain+"<br>");//获得域名
       document.fgColor = "White";
       document.write(document.forms["myForm"].id+"<br>");//获得页面form数组中元素的方法
       document.write(document.lastModified+"<br>");//获得页面最后的修改日期
       document.write(document.URL+"<br>");//获得页面的全路径URL地址
      </script>
    </form>
----------------------------------------------------------------------------------------------------
0037:
    event对象:
    <script language=javascript>
    function fun(eventObj)
    {
        document.write(eventObj.type+"<br>");//获得事件的类型
    }
    </script>
    <input type="button" id="myButtonID" name="myButtonName" value = "Click" onclick="fun(event)"/>
----------------------------------------------------------------------------------------------------
0038:
    Math对象:
    document.write(Math.random());//产生随机数
----------------------------------------------------------------------------------------------------
0039:
    Object对象是所有对象的基类。
----------------------------------------------------------------------------------------------------
0040:
    screen对象:
    document.write(screen.availHeight+"<br>");
    document.write(screen.availWidthxy+"<br>");
    document.write(screen.colorDepth+"<br>");
    document.write(screen.height+"<br>");
    document.write(screen.pixelDepth+"<br>");
    document.write(screen.width+"<br>");
----------------------------------------------------------------------------------------------------
0041:
    window对象:每个窗口和帧都有一个window对象。
    document.write(window.location+"<br>");//获得当前URL
    document.write(window.opener+"<br>");//获得打开本窗口的窗口对象引用
    document.write(window.parent+"<br>");//获得当前窗口的父窗口,只读属性   
   
    window.blur();//失去焦点       
    window.focus();//获得焦点
    window.moveBy(100,100);//移动窗口:当前坐标的相对坐标,屏幕的左上角为坐标原点
    window.moveTo(1,1);//移动窗口:当前坐标的绝对坐标,屏幕的左上角为坐标原点
    window.open( "http://www.somewhere.com","myWindow", "width=400, height=400,resizable=no, toolbar=no" );
    window.print();//打开打印机对话框
    window.resizeBy(-10,-10);//缩放:相对大小
    window.resizeTo(100,100);//缩放:绝对大小
    window.scroll(100,100);window.scrollTo(100,100);window.scrollBy(100,100);//滚动屏幕

    5秒钟之后自动运行:
    function fun()
    {
        document.write("----------------");
    }
    window.setInterval(fun,5000);

    1秒钟之后自动运行window.setTimeout(fun,1000);

    说明:setInterval和setTimeout现在的效果好像是一样的。
----------------------------------------------------------------------------------------------------
0042:
    body的几个事件:
    <body
       onLoad           ="JavaScript: alert('onLoad event');"//加载
       onBeforeUnload   ="JavaScript: alert('onBeforeUnload event');"//卸载前
       onUnload         ="JavaScript: alert('onUnload event');"//卸载
     >
----------------------------------------------------------------------------------------------------
0043:
    获得是组合键中的哪个特殊键:
    var isNav = navigator.appName == "Netscape";
    function getModifiers( event )
    {
        var alt = ( isNav ? event.modifiers & Event.ALT_MASK :window.event.altKey );
        var ctr = ( isNav ? event.modifiers & Event.CONTROL_MASK :window.event.ctrlKey );
        var sft = ( isNav ? event.modifiers & Event.SHIFT_MASK :window.event.shiftKey );

        alert(alt+"|"+ctr+"|"+sft);
    }
----------------------------------------------------------------------------------------------------
0044:
    将事件绑定到HTML元素的方法:

    直接通过元素的属性:
    <input id="Button1" type="button" value="button" onclick = "JavaScript:window.alert('-----')"/>

    通过元素对象的属性:
    <input id="Button1" type="button" value="button"/>
    <script language = "javascript">
    function fun()
    {
        alert("--------");
    }
    document.getElementById("Button1").onclick = fun;
    </script>
----------------------------------------------------------------------------------------------------
0045:
    鼠标拖放图片的例子:

    #region 代码实例
    <html>
      <head>
        <style type="text/css">
        <!--
          #imageA{ position: absolute; left: 450; top = 250; z-index: 1; }
          #imageB{ position: absolute; left: 10; top = 150; z-index: 0; }
        -->
        </style>

        <script language="JavaScript">
        <!--
        var clicked;
        function onLoad()
        {
          document.onmousedown = mouseDown;
        }
        function mouseDown()
        {
           if( clicked == null )
           {
             if( clicked = getClickedImage( event ) )
             {
               document.onmousemove = mouseMove;
               clicked.style.zIndex += 2;
             }
           }
           else
           {
             document.onmousemove = null;
             clicked = null;
           }
        }
        function mouseMove()
        {
          with( clicked.style )
          {
             positionImage( clicked, window.event.x, window.event.y );
          }
        }
        function getClickedImage( event )
        {
          var obj = window.event.srcElement.parentElement;
          if( obj.tagName == "DIV" )
          {return( window.event.srcElement.parentElement );}
          else
          {return( null )};

        }
        function positionImage( image, xPos, yPos )
        {
          image.style.left = xPos;
          image.style.top = yPos;
        }
      // -->
      </script>

     </head>
     <body onLoad="JavaScript: onLoad();">
    
      <div ID="imageB">
        <img border="0" width="200px" height = "200px" src="myImage1.jpg">
      </div>
       
      <div ID="imageA">
          <img border="0" width="200px" height = "200px" src="myImage2.jpg">
      </div>
     </body>
    </html>
    #endregion
----------------------------------------------------------------------------------------------------
0046:
    DOM通用的属性:
    className:样式表中的样式类
    document:对包含本元素的document对象的引用
    id
    innerHTML:当前元素开始和结束标记中的Text和Html元素的引用
    innerText:当前元素开始和结束标记中的Text元素的引用
    isTextEdit:是否有行属性。只有BODY, BUTTON, INPUT, TEXTAREA有行属性。
    lang:元素参数和属性使用的语言
    language:元素使用的脚本语言
    offsetHeight:元素的高度
    offsetWidth:元素的
    offsetLeft:元素相对于父元素,左边界的位置
    offsetTop:元素相对于父元素,上边界的位置
    offsetParent:元素的父元素的引用,很多时候是BODY
    outerHTML
    outerText
    parentElement:元素的父元素的引用
    sourceIndex:在document.all中的索引
    style
    tagName
    title
----------------------------------------------------------------------------------------------------
0047:
    DOM通用的方法:
    click():模拟鼠标单击事件
    contains(element):判断是不是包含某个元素
    getAttribute(attributeName, caseSensitive):获得某个属性的值,caseSensitive为Boolean,是否区分大
小写。
    insertAdjacentHTML(where, HTML):在当前元素的BeforeBegin,AfterBegin,BeforeEnd,AfterEnd位置插入HTML
    insertAdjacentText (where, text):在当前元素的BeforeBegin,AfterBegin,BeforeEnd,AfterEnd位置插入Text
    removeAttribute(attributeName, caseSensitive):删除属性
    scrollIntoView(showAtTop):滚动document到当前元素的位置
    setAttribute(attributeName, value, caseSenstive):给属性赋值
----------------------------------------------------------------------------------------------------
0048:
    DOM的聚集属性:
    all[]:所有元素,包括当前元素
    children[]:当前元素包括的子元素
    filters[]:当前元素包括的所有过滤器元素
----------------------------------------------------------------------------------------------------
0049:
    DOM对象-<A>:

    <a id = "myA" name = "myA" href="www.126.com">OK</a>

    <script language=javascript>
    var aA = document.getElementById("myA");
    document.write("<br>"+aA.host);//服务器地址加端口
    document.write("<br>"+aA.hostname);//服务器地址
    document.write("<br>"+aA.href);//超联接地址http://localhost/www.126.com
    document.write("<br>"+aA.mimeType);//请求文件的类型
    document.write("<br>"+aA.name);//请求文件的类型
    document.write("<br>"+aA.nameProp);//www.126.com
    document.write("<br>"+aA.pathname);//www.126.com
    document.write("<br>"+aA.port);//80
    document.write("<br>"+aA.protocol);//http:
    document.write("<br>"+aA.protocolLong);//超文本传送协议
    document.write("<br>"+aA.search);//超联接地址中问号之后的部分
    document.write("<br>"+aA.tabIndex);
    document.write("<br>"+aA.target);//self、parent、top、blank,超联接地址的打开方式
    aA.blur();//失去焦点
    aA.focus();//获得焦点
    </script>

    支持的事件:
    onblur
    onclick
    ondblclick
    onfocus
    onhelp
    onkeydown
    onkeypress
    onkeyup
    onmousedown
    onmousemove
    onmouseout
    onmouseover
    onmouseup
    onselectstart
----------------------------------------------------------------------------------------------------
0050:
    DOM对象-<AREA>:用于创建可单击的图片地图
----------------------------------------------------------------------------------------------------
0051:
    DOM对象-<BODY>:

    <body id = "myBody" background="C:/pic.jpg" bgColor = "White">
     <script language=javascript>
        var aBody = document.getElementById("myBody");
        document.write("<br>"+aBody.background);//背景图的地址
        document.write("<br>"+aBody.bgColor);//背景的颜色
        document.write("<br>"+aBody.bottomMargin);//下边边界宽度
        document.write("<br>"+aBody.clientHeight);//document内容的高度
        document.write("<br>"+aBody.clientWidth);//document内容的宽度
        document.write("<br>"+aBody.clientLeft);//document内容的左边界位置
        document.write("<br>"+aBody.clientTop);//document内容的上边界位置
        document.write("<br>"+aBody.leftMargin);//左边边界宽度
        document.write("<br>"+aBody.noWrap);//是否限制文档内容,false为限制
        document.write("<br>"+aBody.rightMargin);//右边边界宽度
        aBody.scroll = false;//是否显式滚动条
        document.write("<br>"+aBody.topMargin);//上边边界宽度
     </script>
    </body>

    支持的事件:
    onafterupdate
    onbeforeunload
    onbeforeupdate
    onblur   
    onclick
    ondblclick
    ondragdrop
    onfocus   
    onhelp
    onkeydown
    onkeypress
    onkeyup
    onload   
    onmousedown
    onmousemove
    onmouseout
    onmouseover
    onmouseup
    onmove
    onresize
    onrowenter
    onrowexit
    onscroll
    onselect
    onselectstart
    onunload
----------------------------------------------------------------------------------------------------
0052:
    鼠标滑过切换图像:
    <img src="1.jpg" onmouseover="JavaScript:this.src = '1.jpg'" onmouseout="JavaScript:this.src = '2.jpg'"/>
----------------------------------------------------------------------------------------------------
0053:
    禁用页面元素:
   <input id="Button1" type="button" value="button" />
   <script language=javascript>
    var aButton = document.getElementById("Button1");
    aButton.disabled = true;
   </script>
----------------------------------------------------------------------------------------------------
0054:
    弹出窗口:
    <script language="JavaScript">
    var thePopup = window.createPopup();
    with(thePopup.document.body)
    {
         bgColor = "#CEDACE";
         innerHTML = "<center>" +
                     "<font size=4>弹出窗口</font>" +
                     "</center>";
    }
    </script>
    <input type="button" value="Show" onClick="JavaScript:thePopup.show(350, 350, 250, 250 );">
    <input type="button" value="Hide" onClick="JavaScript:thePopup.hide();">
----------------------------------------------------------------------------------------------------
 

Javascript_projects:创建用Javascript完成的作品 JAVASCRIPT JavaScript是一种具有一流功能的解释性,面向对象的编程语言,并且尽管在许多非基于Web的应用程序中也使用过JavaScript,但众所周知它是网页的客户端脚本语言。 该语言基于原型,是动态的,命令式的,并提供了一种实用的编程风格。 我的待办事项清单1.0 项目1 游戏邦 项目二 立即下载

相关推荐

JavaScript-Projects:适用于任何开发人员的 JavaScript

JavaScript 项目 适用于任何开发人员的 JavaScript。

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

javascript-projects:我为练习而构建的Javascript项目

javascript-projects 我为练习而构建的Javascript项目,其中也包含那些想学习JavaScript的人的项目和想法! 项目路径: 1:番茄钟 描述:建立一个25分钟的番茄钟,专注于琐事和5分钟的休息时间。 在三个5分钟的休息时间之后,第四个是20分钟的休息时间。 有关更多信息,示例: : 2:小费计算器 描述:构建一个计算器,以了解小费金额,账单价值,账单将被拆分的人数以及更多选项。 示例: : 3:变更主题功能 说明:构建将页面主题更改的功能,将浅色主题更改为深色,将深色主题更改为浅色示例: : 4:CSS渐变颜色生成器 说明:生成一个不错的颜色渐变。 只需输入两种颜色,我们的工具就会生成完美的颜色渐变和合适CSS代码。 示例: : 5:处方注册并登录 描述:用户在其中注册的注册页面,然后是使用localStorage验证数据的登录页面。

JavaScript project

I’ve learnt Processing JavaScript a little and have some complete projects. They are very simple but I think they are not ugly. View it on my own blog https://dyingdown.github.io/2019/09/03/JS-project...

yaoo_o的博客 918

javascript-projects:可以构建一些小型项目来学习javascript或进行实践

请不要使用框架-仅使用[removed]laptop: 此仓库专用于原始JavaScript项目和代码段。 如果您想实践,或者只是想开始,那么此仓库适合您。 想法是使用香草JavaScript进行练习。 科技栈 HTML5 CSS JavaScript 项目理念 提示计算器 :check_mark_button: 费用分摊 :check_mark_button: 计算器 表格验证器 颜色选择器 :check_mark_button: 弹出导航 悬停效果 :check_mark_button: 点击滑入/滑出-滑动完成,剩下动画 弹出 Tootlip-由2种解决方案CSS和JS完成。 但是,想补充 JS动画。 待办事项清单 测验 占星术预测 色标发生器 创建组件 电子商务-产品的颜色变化 聊天 单位换算 gif搜索 推特搜索 随机图像 报价生成器 滑杆 标签/手风琴 进度条 字数 在页面中搜索单词 贡献 回购开放给公关 联系我 您可以通过与我联系,或者在关注我

javascript-projects:我的 Javascript 工作示例

javascript项目 ###Samples 我的 Javascript 代码 javascript-quiz-app-build-ol(在网络浏览器中运行的交互式琐事测验。) deep_equal(比较两个 Javascript 对象以确定它们的相等性。对于相等值的表达式返回 true,但对于对象,仅当它们具有相同的属性并且这些属性具有相同的值时才返回 true。) group_by(抽象分组操作的函数)

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 181

BUPT软件安全实验三

可以看出栈溢出对程序运行的安全性有很大的威胁,如果不对栈进行保护,只要系统中存在栈溢出漏洞,即可令攻击者通过非正当方法获取操作权限。(6)解决思考题,即:在不修改StackOverrun程序源代码的情况下,构造shellcode,通过JMP ESP的方式实现通过记事本打开shellcode.txt(可使用CreateProcessA或WinExec等API)。查看缓冲区信息,可以看到dest指向地址0x0012FAF0,其为数组的存放起始位置,也就是shellcode注入的起始位置。

7xun's space 1967

副队长BootStrap5探究(2)--按钮与按钮组

本文系统讲解Bootstrap 5按钮组件的使用与底层原理。通过CDN引入框架,掌握btn基础类及primary、success等主题色应用,学习轮廓按钮(btn-outline-*)、尺寸控制(btn-lg/sm)、块级布局(d-block)和禁用状态(disabled)等实用功能。结合源码解析,深入理解其基于CSS的圆角、过渡动画、伪类交互实现机制,实现“快速上手+原理掌握”的双重目标,助力前端技能进阶。

编程副队长 697

避开爬虫坑:手把手教你合法获取百度地图POI边界数据(以学校为例)

本文详细介绍了如何合规获取百度地图POI边界数据的方法论,特别以学校为例。通过解析POI数据结构、合法使用百度地图API接口、优化请求策略以及数据处理技巧,帮助开发者和研究者在遵守平台规则的前提下高效获取地理信息。适用于学术研究、商业分析等多种场景,确保数据采集的合法性与准确性。

weixin_28683065的博客 395

STK与Matlab连接报错?手把手教你解决mexConnect函数执行问题(附完整避坑指南)

本文针对STK与Matlab连接时常见的“mexConnect函数执行”报错,提供了完整的诊断与解决方案。文章深入剖析了错误根源在于路径冲突或文件损坏,并手把手指导用户通过定位STK连接器文件、正确配置Matlab路径(包括使用addpath命令)以及执行初始化测试三步走策略,彻底解决问题。同时附上版本兼容性检查、安装避坑指南及构建稳健工作流的建议,帮助用户建立可靠的STK-Matlab联合仿真环境。

yolo5detector的博客 473

DSH (DeepSeek Harness) Windows 升级安装指南20261107

注意:如果在普通窗口执行 nvm 提示找不到命令,或执行 nvm use 提示 Access is denied,请务必关闭当前窗口,重新打开一个管理员CMD 执行上述完整路径命令。找到 .credentials.yaml,将其重命名为 .credentials.yaml.bak(备份并使其失效)。Node.js Storage Location:可改到非系统盘(如 D:\dev\nvm,避免路径含空格或中文)。打开文件资源管理器,进入 C:\Users<你的用户名>.dsh\。

fengye207161的博客 247

如何实现VMware虚拟机上的ubuntu与windows主机共享文件夹

windows主机部分   在硬盘上任意位置新建文件夹,此处命名为Share,实际上随意。 接下来右键属性,操作如下系列图所示: 在硬盘上任意位置新建文件夹,此处命名为Share,实际上随意。 成功修改后,显示如下界面: VMware部分 ubuntu在关机状态下,点击“编辑虚拟机设置” 接下来,开启ubuntu系统,在终端输入: ·· vmware-hgfsclient ·· 将会显示如下画面,但是此时你可能找不到 /mnt/hgfs 这个路径,如果找不到该路径,则需要在虚拟

Mr.Sliver的博客 8221

SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在

# SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在 > 这是一套基于 Spring Boot 的服装销售平台源码,配套 `db.sql` 建表脚本,业务覆盖商品展示、购物车、订单流转、收货地址、订单评价、商品评论、在线客服、轮播图和资讯。形态是**前后台双端**:前台是顾客逛的商城,后台是管理员管的控制台。本文带你看清里面有什么、怎么跑

面朝大海 229

解锁医疗AI密码:医疗人工智能专业大学四年学习路径

医疗AI人才培养路径解析 本文系统梳理了医疗人工智能专业四年培养方案,分为基础、进阶、应用和拓展四个阶段: 大一聚焦基础学科,涵盖高等数学、医学概论、Python编程等核心课程,辅以医学数据认知实习。大二深入机器学习和医学数据处理领域,学习监督/无监督学习算法及医学影像分析技术。大三进入深度学习阶段,掌握CNN/RNN等神经网络模型,并实践医疗AI应用开发。大四关注前沿技术如大模型在医疗中的应用,完成毕业设计与企业实习。 课程体系强调医工交叉,每学期均配置实践环节,从基础编程到参与真实医疗AI项目,逐步培养

AllenLV的博客 2505

Excel插件开发实战:从零封装一个带自定义Ribbon的.xlam工具包

本文详细介绍了如何从零开发一个带自定义Ribbon的Excel插件.xlam工具包。通过VBA和XML技术,读者将学习到插件架构设计、Ribbon界面定制、模块化开发以及企业级部署策略,帮助提升Excel自动化办公效率。

weixin_42531128的博客 521

汽车租赁系统(协同过滤算法、支付宝沙盒支付、 腾讯地图接入、WebSocket在线沟通、ECharts运营分析、三角色协同、还车费用处理)

本系统基于B/S架构,采用前后端分离设计,集成SpringBoot3、Vue2、MySQL等技术,实现用户、商家、管理员三角色协同管理。亮点包括:车型加权推荐与话题协同过滤算法提升个性化体验;支付宝沙盒支付、腾讯地图定位、WebSocket在线沟通保障流程闭环;还车费用智能计算与ECharts多维数据可视化助力运营分析,全面支持租车全生命周期管理。

paopaokaka_luck的博客 168

用 ABAP RAP + XCO 把 Excel 导入业务对象:从弹窗 Action 到 EML 落库与附件清理的完整实践

摘要:本文介绍了在SAP RAP框架下实现Excel批量导入功能的完整方案。通过XCO库的XLSX模块解析Excel文件,结合RAP的行为定义和Fiori Elements界面集成,构建了一个支持试运行、数据校验和自动合并的业务导入功能。方案采用RAP标准范式,包括Action参数设计、EML事务处理、附件管理以及异常消息反馈,实现了从文件上传到数据落库的端到端流程,既保证了系统稳定性,又提升了业务用户体验。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 282

微信小程序-wxs

在微信开发者工具中右键创建.wxs后缀的文件。每个.wxs文件也是一个独立模块,同样使用导出内容。示例(文件return d;FOO: foo,bar: bar(外联定义参考官方文档)

dreams_dream的博客 379

AI编码规则:从提示工程到自动化,提升大模型生成代码质量

在软件工程领域,代码质量是保障软件可维护性、安全性和团队协作效率的核心。其背后遵循着从基础语法规范到架构设计原则的一系列工程实践。随着大语言模型(LLM)在代码生成任务中的广泛应用,如何确保AI生成的代码符合这些工程标准,成为一个关键的技术挑战。这涉及到将人类工程师积累的最佳实践,转化为机器可理解、可执行的明确约束。通过系统化的**编码规则**定义与集成,例如构建涵盖安全、风格、架构的多层次规则集,并将其融入**提示工程**或自动化工作流,可以显著引导AI产出更健壮、规范的代码。这种方法的价值在于,它能将模

weixin_42525189的博客 643

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

实战项目:哈米音乐(前六章)

本文整理哈米音乐实战项目前六章核心知识点,涵盖技术选型、数据库建模、Maven聚合工程、MyBatis逆向工程、SSM架构整合、泛型反射抽取公共Dao与Service、文件流代码生成器,附核心易错点速查表,便于复习备考。

既然你都点开这里了,那可以给我点个关注吗?可以吗?可以吗? 272

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

设计模式(unity游戏研发版)

当你使用图形用户界面类时通常会遇到一个问题。比如,你创建了自定义按钮类并允许客户端在按钮中注入自定义代码,这样当用户按下按钮时就会触发这些代码。观察者模式允许任何实现了订阅者接口的对象订阅发布者对象的事件通知。你可在按钮中添加订阅机制,允许客户端通过自定义订阅类注入自定义代码。在Unity中,这就像UnityEvent在Inspector中绑定多个回调。

m0_63330263的博客 122

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【技术专题】JavaScript 网页技术 - JavaScript 流程控制

小锋老师推出《一天学会JavaScript(无废话版)》视频教程,涵盖基础语法、流程控制、函数、数组对象、DOM操作及ES6新特性。内容精炼,配套课件与源码打包下载,助力快速入门。重点讲解if/else、switch、for/while循环、for...of/in遍历及break/continue使用场景,并通过成绩判断实例演示实际应用。适合零基础学习者高效掌握核心技能。

java1234的博客 167

基于 FastAPI+LangChain+LangGraph+Agent+Vue3+MySQL 的房产数据采集与房价预测分析平台

本文介绍一个完整的「房产数据采集+AI房价预测」全栈项目,涵盖FastAPI异步后端、LangGraph Agent智能问答、爬虫采集、机器学习预测与Vue3前端,实现从数据采集到AI交互的闭环。项目融合多技术栈,具备真实业务场景与生产级设计(如降级策略、流式输出、多模型对比),兼具简历亮点与答辩演示优势,可系统性提升工程能力,并附高频面试题解析,是理想的技术综合实践项目。

深耕开发,专注编程实战。分享源码解析、项目搭建、问题排查笔记,沉淀技术,持续更新。 248

副队长BootStrap5探究(11)--单选框 radio

本文详解Bootstrap 5中单选框(radio)的使用与底层实现原理。通过引入Bootstrap CSS,掌握基础用法、默认选中、禁用状态及横向排列等特性。核心在于隐藏原生input,利用~兄弟选择器配合伪元素::before和::after绘制圆形外圈与实心圆点,实现统一视觉风格。重点解析了position、z-index、opacity及:checked状态控制等CSS技巧,巩固前端样式设计能力。

编程副队长 291
上一篇: Pro JavaScript Techniques [摘录]
下一篇: Microsoft SQL Server性能调校
冯立彬
冯立彬 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
博客等级 码龄21年 5458粉丝 593原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值