我写了一个HTML和一个Javascript文件,
在VS中F5运行时能够成功,但是在文件夹中双击运行的话却有不同的效果(某个方法会不执行)
老鸟们帮帮忙啊!

解决方案 »

  1.   

    一个是http协议方式,一个是file协议,
    如果file运行ajax请求http,存在跨域的问题的。
      

  2.   


    晕死,他是文本文件,双击就是直接打开啦,按F5,为什么可以因为文本文本中的内容,被Web服务,读成了命令处理了,然后处理完的内容,又给浏览器解释,和你直接打开,怎么会一样,直接打开(估且认为,你的HTML默认就是浏览器打开),里面的有些内容,浏览器是不知道什么东西的。你完整的学习一下,Web开发吧, 
    这样别人很难帮你。
      

  3.   

    还是直接上代码吧<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
    <script type="text/javascript">var filePath = "D:\\張雷\\Ray.xml";//保存信息的文件地址
    //判断是否连接服务器
    function linkJudge()
    {
        
    //    var fso = new ActiveXObject("Scripting.FileSystemObject");
    //    if(window.navigator.onLine && fso.FileExists(filePath))
    //    {
    //        if(confirm("是否连接本社?"))
    //        {
    //            //document.cookie= "filePath=" + filePath;
    //            document.location.href="http://localhost:2775/WebSite1/Main.aspx?filePath="+filePath;
    //        }
    //    }
        if(window.navigator.onLine && isExists())
        {
            if(confirm("是否连接本社?"))
            {
                document.location.href="http://localhost:2775/WebSite1/Main.aspx?filePath="+filePath;
            }
        }
    }//本地保存
    function localSave()
    {
        //var fso = new ActiveXObject("Scripting.FileSystemObject");
        var xmldoc=new ActiveXObject("Microsoft.XMLDOM");
        xmldoc.async = false;
        xmldoc.load(filePath);
        var info;//加入根元素
        //判断文件是否存在 若不存在,则新建根元素
        //var p=xmldoc.createProcessingInstruction("xml","version='1.0' encoding='gb2312'");//创建声明
        //xmldoc.appendChild(p);//添加声明
        if(!isExists())
        {
            info = xmldoc.createElement("Information");
            xmldoc.appendChild(info);
        }
        else
        {
            info = xmldoc.getElementsByTagName("Information")[0];
        }
        var vision=xmldoc.createAttribute("vision");
        vision.nodeValue="V1.0";
        info.setAttributeNode(vision);    var objChildNode = xmldoc.createElement("Year");
        info.appendChild(objChildNode);    var name1 = xmldoc.createElement("Name");
        name1.text = document.getElementById("Text1").value;
        objChildNode.appendChild(name1);    var age1 = xmldoc.createElement("Age");
        age1.text = document.getElementById("Text2").value;
        objChildNode.appendChild(age1);
        alert("A");
        //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
        xmldoc.save(filePath);
        alert("B");
    }function isExists()
    {
        var xmldoc=new ActiveXObject("Microsoft.XMLDOM");
        xmldoc.async = false;
        xmldoc.load(filePath);
        var info = xmldoc.getElementsByTagName("Information");
        if(info)
        {
            return true;
        }
        return false;

    </script>
    </head>
    <body onload="linkJudge()">
        <fieldset>
            <legend id="age1">2011</legend>
                Name:<input id="Text1" type="text" />
                <br />
                Age:<input id="Text2" type="text" />
        </fieldset>
        <br />
        <br />
        <input type="button" value="Commit" onclick="localSave()"/>
    </body>
    </html>
      

  4.   

    执行到 localSave()中的 alert("A")就停了代码基本功能就是单机状态下,将网页信息保存到本地。我是觉得一个单纯的HTML 又不是后台文件,直接用浏览器运行居然与VS中F5运行效果不同
      

  5.   

    让别人误解了,其实你用vs做了一个网页,网页中调用了一个js文件
    你在vs中测试通过了双击这个html文件,运行这个的时候,只要引用路径正确,应该不会有问题的
      

  6.   


        alert("A");
        //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
        xmldoc.save(filePath);// <---这里
        alert("B");ERROR:无法写入
    用VS运行是没问题的。。
      

  7.   

    本帖最后由 net_lover 于 2011-08-18 14:18:27 编辑
      

  8.   

    另外,http也是不能加载本地文件的。
      

  9.   

    如果要办到离线网页在本地存储信息
    给这个 "D:\\張雷\\Ray.xml" 文件开everyone读写的权限.
      

  10.   

    简而言之,就是仅仅用HTML和Javascript 实现本地保存文件
      

  11.   

    本地存储采用的是localStorage技术,可以保存的,flash,silverlight,html5都是支持的,
    但不能保证客户端都是支持的
    网上一搜有很多了
    http://www.google.com/search?hl=zh-CN&newwindow=1&safe=off&client=firefox-a&hs=yHI&rls=org.mozilla:zh-CN:official&sa=X&ei=g7lMTrDbNankiALIkqGpAQ&ved=0CCQQvwUoAQ&q=localStorage&spell=1&biw=1252&bih=553
      

  12.   

    vs运行调用编译器中的development的 直接解释
    直接打开通常调用默认的浏览器,比如IE,
    执行权限不同
      

  13.   

    嗯。用VS调试的话,VS帮你做了权限转化,所以可以读写本地文件。而直接运行,或者是从Web服务器上访问网页,都存在JS无权访问本地文件的问题。这是浏览器安全的问题,如果允许JS随便访问本地文件的话,你的机器估计就没任何数据是安全的了。
    不过,IE是可以设置允许JS操作本地文件的,其它浏览器就不知道了。但是,不建议这么做,因为真的很危险。