佚枫吧 关注:14贴子:2,987
  • 7回复贴,共1

【技术贴】关于web的种种

只看楼主收藏回复



通过百度相册上传1楼2013-11-11 10:08回复
    首先,科普下在服务器端页面,调用本地可执行程序的方法~【PS:方法也是刚学到的~在努力进步中,从现在起


    用 url protocol 的方式来实现。用这种方式实现,任何浏览器都兼容,不会存在只有前面那种只有IE或FIREFOX才行的情况。
    都用过QQ,迅雷,电驴,在网页上点击的时候,就会弹出QQ,或者迅雷,电驴的下载界面,用的就是这个原理,在微软的MSDN上也有说明:http://msdn.microsoft.com/en-us/library/aa767914%28v=vs.85%29.aspx 在这里,做一个简单的例子。
    1. 先注册URL PROTOCOL, 在windows 下就是注册表:
    ========================================================
    Windows Registry Editor Version 5.00
    [HKEY_CLASSES_ROOT\myprotocol]
    @="myprotocol Protocol"
    "URL Protocol"=""
    [HKEY_CLASSES_ROOT\myprotocol\DefaultIcon]
    @="C:\\WINDOWS\\NOTEPAD.EXE"
    [HKEY_CLASSES_ROOT\myprotocol\shell]
    @=""
    [HKEY_CLASSES_ROOT\myprotocol\shell\open]
    @=""
    [HKEY_CLASSES_ROOT\myprotocol\shell\open\command]
    @="\"C:\\WINDOWS\\NOTEPAD.EXE\" "
    ======================================================
    保存内容为 reg文件,然后执行,就加入注册表,注册了这个名字为myprotocol 的协议.
    【名称可以任意,程序可以任意~】
    2. 写测试页面
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    <div>
    <a href="myprotocol://">
    执行可执行文件
    </a>
    </div>
    </body>
    </html>
    运行页面,点击链接,就能直接打开 notepad 。因为这里用的是写字板测试的,你可以在注册表中,改成其他任何你要的程序。


    本楼含有高级字体2楼2013-11-11 10:15
    收起回复
      在网页中执行本地可执行文件【二】
      用js脚本来实现,【此方法也是从网上找的,集合在一起,记录学习】
      http://www.yihaomen.com/article/js/211.htm【原贴】
      在网页中执行本地exe程序(run exe from web browser)


      有时候,需要在 网页上去执行本地的一个EXE文件,如果用javascript ,一般浏览器,由于安全问题,都会禁止掉这个特性。但经过测试,目前在ie,firefox中仍然可以用JS来实现,但在chrome,safari 中没有实现。本文就用javascript在IE,FIREFOX中执行 exe 文件做例子。
      程序代码
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title> IE 或 Firefox 执行 Exe 文件 </title>
      <script>
      function LaunchApp() {
      var exepath="C:\\WINDOWS\\NOTEPAD.EXE";
      if (!document.all) {
      netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
      var file = window.Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
      file.initWithPath(exepath);
      var run = window.Components.classes['@mozilla.org/process/util;1'].createInstance(Components.interfaces.nsIProcess);
      run.init(file);
      var parameters = [""];
      run.run(false, parameters,parameters.length);
      }
      else{
      var ws = new ActiveXObject("WScript.Shell");
      ws.Exec(exepath);
      }
      }
      </script>
      </head>
      <body>
      <input type="button" onclick="javascript:LaunchApp()" value="执行EXE" />
      </body>
      </html>
      打开的文件是 notepad ,记事本,你可以替换成,你想要打开的文件。在 IE,FIREFOX 下通过。
      使用这种方式打开 EXE,不是很方便,而且有局限。还有另外一种方法:url protocol .在下一篇博客中再讲解。


      本楼含有高级字体3楼2013-11-11 10:21
      回复
        【我的web代码……js实现上下滚动页面,很好玩的东西。ps:妈蛋的连删我两次,这特么是抽风的节奏么?】
        <head>
        <style type="text/css">
        #container{
        text-align: left;
        background-color: #faf7ec;
        width: 500px;
        margin: 20px auto 0 auto;
        padding: 0;
        font-family:Arial, Helvetica, sans-serif;
        font-size:12px;
        }
        #block0, #block1, #block2, #block3, #block4, #block5 {
        border-top: solid 1px #785a3c;
        margin: 0;
        padding: 10px;
        }
        .active {
        background-color: #fff;
        }
        .visited {
        background-color: #ede7da;
        }
        #block0, #block0.active, #block0.visited {
        text-align: center;
        background-color: #a0dcf8;
        border-top: none;
        border-bottom: solid 4px #785a3c;
        }
        </style>
        <script>
        var ScrollWin = {
        w3c : document.getElementById,
        iex : document.all,
        scrollLoop : false,
        scrollInterval : null, // setInterval id
        currentBlock : null, // object reference
        getWindowHeight : function(){
        if(this.iex) return (document.documentElement.clientHeight) ?
        document.documentElement.clientHeight : document.body.clientHeight;
        else return window.innerHeight;
        },
        getScrollLeft : function(){
        if(this.iex) return (document.documentElement.scrollLeft) ?
        document.documentElement.scrollLeft : document.body.scrollLeft;
        else return window.pageXOffset;
        },
        getScrollTop : function(){
        if(this.iex) return (document.documentElement.scrollTop) ?
        document.documentElement.scrollTop : document.body.scrollTop;
        else return window.pageYOffset;
        },
        getElementYpos : function(el){
        var y = 0;
        while(el.offsetParent){
        y += el.offsetTop
        el = el.offsetParent;
        }//欢迎来到站长特效网,我们的网址是www.zzjs.net,很好记,zz站长,js就是js特效,本站收集大量高质量js代码,还有许多广告代码下载。
        return y;
        },
        scroll : function(num){
        if(!this.w3c){
        location.href = "#"+this.anchorName+num;
        return;
        }
        if(this.scrollLoop){
        clearInterval(this.scrollInterval);
        this.scrollLoop = false;
        this.scrollInterval = null;
        }//欢迎来到站长特效网,我们的网址是www.zzjs.net,很好记,zz站长,js就是js特效,本站收集大量高质量js代码,还有许多广告代码下载。
        if(this.currentBlock != null) this.currentBlock.className = this.offClassName;
        this.currentBlock = document.getElementById(this.blockName+num);
        this.currentBlock.className = this.onClassName;
        var doc = document.getElementById(this.containerName);
        var documentHeight = this.getElementYpos(doc) + doc.offsetHeight;
        var windowHeight = this.getWindowHeight();
        var ypos = this.getElementYpos(this.currentBlock);
        if(ypos > documentHeight - windowHeight) ypos = documentHeight - windowHeight;
        this.scrollTo(0,ypos);
        },
        scrollTo : function(x,y){
        if(this.scrollLoop){
        var left = this.getScrollLeft();
        var top = this.getScrollTop();
        if(Math.abs(left-x) <= 1 && Math.abs(top-y) <= 1){
        window.scrollTo(x,y);
        clearInterval(this.scrollInterval);
        this.scrollLoop = false;
        this.scrollInterval = null;
        }else{
        window.scrollTo(left+(x-left)/10, top+(y-top)/10);
        }//欢迎来到站长特效网,我们的网址是www.zzjs.net,很好记,zz站长,js就是js特效,本站收集大量高质量js代码,还有许多广告代码下载。
        }else{
        this.scrollInterval = setInterval("ScrollWin.scrollTo("+x+","+y+")",20);
        this.scrollLoop = true;
        }
        }//欢迎来到站长特效网,我们的网址是www.zzjs.net,很好记,zz站长,js就是js特效,本站收集大量高质量js代码,还有许多广告代码下载。
        };
        ScrollWin.containerName = "container";
        ScrollWin.anchorName = "anchor";
        ScrollWin.blockName = "block";
        ScrollWin.onClassName = "active";
        ScrollWin.offClassName = "visited";
        </script>
        </head>
        <body>
        <a href="http://www.zzjs.net/">站长特效网</a>,站长必备的高质量网页特效和广告代码。zzjs.net,站长js特效。<hr>
        <!--欢迎来到站长特效网,我们网站收集大量高质量js特效,提供许多广告代码下载,网址:www.zzjs.net,zzjs@msn.com,用.net打造靓站-->
        <div align="center">
        <div id="container">
        <a name="anchor0"></a>
        <div id="block0">
        <a href="javascript:ScrollWin.scroll('1')">链接 1</a> |
        <a href="javascript:ScrollWin.scroll('2')">链接 2</a> |
        <a href="javascript:ScrollWin.scroll('3')">链接 3</a> |
        <a href="javascript:ScrollWin.scroll('4')">链接 4</a> |
        <a href="javascript:ScrollWin.scroll('5')">链接 5</a>
        </div>
        <a name="anchor1"></a>
        <div id="block1">
        <h3><a href="#" onclick="javascript:ScrollWin.scroll('0'); return false;">顶部</a>
        链接 1</h3>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        </div>
        <a name="anchor2"></a>
        <div id="block2">
        <h3><a href="#" onclick="javascript:ScrollWin.scroll('0'); return false;">顶部</a>
        链接 2</h3>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        </div>
        <a name="anchor3"></a>
        <div id="block3">
        <h3><a href="#" onclick="javascript:ScrollWin.scroll('0'); return false;">顶部</a>
        链接 3</h3>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        </div>
        <a name="anchor4"></a>
        <div id="block4">
        <h3><a href="#" onclick="javascript:ScrollWin.scroll('0'); return false;">顶部</a>
        链接 4</h3>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        </div>
        <a name="anchor5"></a>
        <div id="block5">
        <h3><a href="#" onclick="javascript:ScrollWin.scroll('0'); return false;">顶部</a>
        链接 5</h3>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        <p>内容</p>
        </div>
        </div>
        </div>
        </body>


        6楼2013-11-12 11:00
        收起回复
          做web,少不了对javascript的学习
          接下来介绍点javascript的基础知识
          javascript区分大小写,虽然html不区分大小写(尽管xhtml是区分大小写的,但是由于浏览器有着较强的的纠错能力,使得即使文档中包含很多不严格的大小写,浏览器也能够比较“宽容”的正确解析渲染)。
          在javascript中,和其他编程语言一样,使用分好将语句分隔开。这对与增强代码的可读性和整洁性非常重要;缺少分隔符,一条语句的结束就编程了下调语句的开始,反之亦然。
          在javascript中,如果语句各自独占一行,通常可以省略语句之间的分号(程序结尾,或者右花括号“}”之前的分号也可以省略)。许多javascript程序员使用分号来明确标记语句的结束,即使在并不完全需要分号的时候也是如此【本人就是这样……】。另一种风格就是,在任何可以省略分号的地方都将其省略,只有在不得不使用的时候才使用分号。
          关于可选分号的问题,需要注意一下细节:
          同行内的两条语句之间必须有分号;
          例如:a=1;b=2;
          下面的语句的分割规则会导致一些意想不到的情形,以下代码写成两行,看起来是两条独立的语句:
          var x=y+f
          (a+b).toString()
          但第二行的圆括号却和第一行的f组成了一个函数调用,JavaScript会把这段代码看作是:
          var x=y+f(a+b).toString();
          而这段代码的本意并不是这样。为了能让上述代码解析为两条不同的语句,必须手动填写行尾的显示分号。
          通常来讲,如果一条语句以“(”、“[”、“/”、“+”或者“-”开始,那么他极有可能和前一条语句合在一起解析。以“/”、“+”和“-”开始的语句并不常见,而以“(”和"["开始的语句责非常常见,至少在一些javascript编码风格中是很普遍的。所以,有些程序员喜欢保守的在与拒签加上一个分号,这样哪怕之前的句子被修改了,分号被误删除了,当前语句还是会正确的解析;如下;
          var h=1 //分号没有了
          ;[x,x+1,x+2].foreach(console.log)//前面的分号保证了正确的语句解析
          如果当前语句和下一行语句无法合并解析,javascript则在第一行填补分号,这是通常规则,但有两个例外。第一个例外是涉及 return 、break、continue语句的场景中,如果这三个关键字后紧跟着换行,javascript则会在换行处填补分号。如下代码:
          return
          true
          解析为:return;true;
          而源代码的本意是 :return true;
          也就是说,在return 、break和continue和随后的表达式之间不能有换行,如果添加了换行,程序则只有在及特殊的情况下才会报错,而且程序的调试非常不方便。
          第二个例外是涉及到“++”和“--”运算符的时候。这些运算符可以作为前缀,也可以作为后缀。如果将其用作后缀表达式,它和表达式应当在同一行。否则,行尾将填补分号,同事“++”或“--”将会作为下一行代码的前缀操作符并与之一起解析,例如,这段代码:
          x
          ++
          y
          javascript 会解析为:
          x;++y;
          而句子的本意是:x++;y;


          7楼2013-12-09 16:03
          回复
            想知道null和undefined的差别么,我告诉你
            在javascript中,null代表“无值”
            undefined代表未定义或不存在~


            来自Android客户端8楼2013-12-11 23:12
            回复