调查了3天的问题:在VS中运行与直接运行的区别? 我写了一个HTML和一个Javascript文件,在VS中F5运行时能够成功,但是在文件夹中双击运行的话却有不同的效果(某个方法会不执行)老鸟们帮帮忙啊! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一个是http协议方式,一个是file协议,如果file运行ajax请求http,存在跨域的问题的。 晕死,他是文本文件,双击就是直接打开啦,按F5,为什么可以因为文本文本中的内容,被Web服务,读成了命令处理了,然后处理完的内容,又给浏览器解释,和你直接打开,怎么会一样,直接打开(估且认为,你的HTML默认就是浏览器打开),里面的有些内容,浏览器是不知道什么东西的。你完整的学习一下,Web开发吧, 这样别人很难帮你。 还是直接上代码吧<!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> 执行到 localSave()中的 alert("A")就停了代码基本功能就是单机状态下,将网页信息保存到本地。我是觉得一个单纯的HTML 又不是后台文件,直接用浏览器运行居然与VS中F5运行效果不同 让别人误解了,其实你用vs做了一个网页,网页中调用了一个js文件你在vs中测试通过了双击这个html文件,运行这个的时候,只要引用路径正确,应该不会有问题的 alert("A"); //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ xmldoc.save(filePath);// <---这里 alert("B");ERROR:无法写入用VS运行是没问题的。。 本帖最后由 net_lover 于 2011-08-18 14:18:27 编辑 另外,http也是不能加载本地文件的。 如果要办到离线网页在本地存储信息给这个 "D:\\張雷\\Ray.xml" 文件开everyone读写的权限. 简而言之,就是仅仅用HTML和Javascript 实现本地保存文件 本地存储采用的是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 vs运行调用编译器中的development的 直接解释直接打开通常调用默认的浏览器,比如IE,执行权限不同 嗯。用VS调试的话,VS帮你做了权限转化,所以可以读写本地文件。而直接运行,或者是从Web服务器上访问网页,都存在JS无权访问本地文件的问题。这是浏览器安全的问题,如果允许JS随便访问本地文件的话,你的机器估计就没任何数据是安全的了。不过,IE是可以设置允许JS操作本地文件的,其它浏览器就不知道了。但是,不建议这么做,因为真的很危险。 海康SDK开发NET_DVR_GetDVRWorkState_V30获取不到信息 winform中文字自动换行 高手进来论论程序性能问题 socket多线程求解 如何控制子窗体的的关闭 关于窗体中传参的问题? 如何优化以下代码?请高手们教路 如何使用js控制checkboxlist 我的安装问题 C# 关于Excel的操作。在线等!!! 强数据类型报错了。 webserver中json反序列化的时候出现一个异常?
如果file运行ajax请求http,存在跨域的问题的。
晕死,他是文本文件,双击就是直接打开啦,按F5,为什么可以因为文本文本中的内容,被Web服务,读成了命令处理了,然后处理完的内容,又给浏览器解释,和你直接打开,怎么会一样,直接打开(估且认为,你的HTML默认就是浏览器打开),里面的有些内容,浏览器是不知道什么东西的。你完整的学习一下,Web开发吧,
这样别人很难帮你。
<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>
你在vs中测试通过了双击这个html文件,运行这个的时候,只要引用路径正确,应该不会有问题的
alert("A");
//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
xmldoc.save(filePath);// <---这里
alert("B");ERROR:无法写入
用VS运行是没问题的。。
给这个 "D:\\張雷\\Ray.xml" 文件开everyone读写的权限.
但不能保证客户端都是支持的
网上一搜有很多了
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
直接打开通常调用默认的浏览器,比如IE,
执行权限不同
不过,IE是可以设置允许JS操作本地文件的,其它浏览器就不知道了。但是,不建议这么做,因为真的很危险。