这是进一步阐述问题的图片:
答案 0 :(得分:2)
首先,javascript无法在您的计算机上保存文件(除了您使用ie)。安全,隐私...
如果您想让用户下载他创建的文件:
Chrome具有新的download
属性
但它也适用于没有下载属性的其他brosers。
var txt='var x = 3,lol=fun;';
function dl(data,filename){
var b=document.createElement('a');
b.download=filename;
b.textContent=filename;
b.href='data:application/json;base64,'+
window.btoa(unescape(encodeURIComponent(data)));
return b
}
document.body.appendChild(dl(txt,'my.js'));
<强>样本强>
评论中的也是自动下载的链接。
想要在服务器上保存数据:
注意:如果要将该功能保存到服务器,则需要像php这样的服务器语言
<?php
if($_POST['fn']&&$_POST['data']){
$fh=fopen($_POST['fn'],'w') or die("can't open file");
if(fwrite($fh,$_POST['data'])){
echo '["ok":"file saved"]';// maybe return the saved code.
//echo json_encode($_POST);
}else{
echo '["error":"can\'t save the file"]';
}
fclose($fh);
}
?>
想要仅在用户计算机上保存数据(使用现代网络技术吗?)
您还可以将数据存储在(clientSide)中:
window.localStorage
window.sessionStorage
webSQL
indexedDB
想要从它的字符串执行脚本吗?
不要使用eval();
使用:
var js="var x='hey';alert(x);"
(new Function(js))()
要实现您的需求,您需要混合使用这些技术。
如果您有任何其他问题,请询问。
答案 1 :(得分:1)
你可以做一种技巧,(概念):
答案 2 :(得分:1)
Javascript无法直接写入文件系统(除非您使用Windows HTA应用程序,运行HTML / javascript - 然后在IE中可以使用特殊文件系统对象)。如果这是合适的,请看这里: Microsoft FileSystemObject
假设它是一个传统的网页,它需要将生成的javascript保存到Savedfunction.js文件中。
那只是一个文本文件,所以你可以......
用户在您的网页上的textarea中添加新的javascript作为简单文字。
当用户提交新功能(即点击“保存”或其他内容)时,请将HTML表单提交给服务器。
即:正常的提交过程,只是附加到文件,恰好是一个javascript文件。如果有任何需要的参数,那么你可能还需要保留一个生成的函数列表和一个legitemate调用它们的文本 - 否则用户(或网页)如何知道如何使用它们?
要查看可用的javascript函数,请打开(通过服务器脚本)读取js文件的网页,以获取有关菜单选项中显示内容的数据,并将js文件作为脚本包含在内,以便单击右侧选项运行正确的javascript例程。
关于提交javascript时的语法检查..我会把这一点留给你!我想你可以使用window.eval(包装在try .. catch块中)来查看它是否在提交之前编译。