Javascript 我怎样才能做到这一点;另存为HTML“;而不是它现在的样子;以HTML格式下载;?
我正在做一个在线网页编辑器,我需要这个。 如何将其转换为“另存为”功能而不是“下载功能”?不同之处在于,在“下载为”中,您无法决定它应该是什么名称,但在“另存为”中,您可以在保存文件之前决定保存文件名 那么如何将其设置为“另存为”,而不是“下载为”? PS:如果你能帮我添加一个“加载文件”按钮也可以,那就太好了。Javascript 我怎样才能做到这一点;另存为HTML“;而不是它现在的样子;以HTML格式下载;?,javascript,html,file,download,save,Javascript,Html,File,Download,Save,我正在做一个在线网页编辑器,我需要这个。 如何将其转换为“另存为”功能而不是“下载功能”?不同之处在于,在“下载为”中,您无法决定它应该是什么名称,但在“另存为”中,您可以在保存文件之前决定保存文件名 那么如何将其设置为“另存为”,而不是“下载为”? PS:如果你能帮我添加一个“加载文件”按钮也可以,那就太好了。 <html> <head> <style type="text/css">...</style> <scrip
<html>
<head>
<style type="text/css">...</style>
<script type="text/JavaScript">
window.onload = function() {
var txt = document.getElementById('html');
txt.value = window.onload + '';
document.getElementById('link').onclick = function(code) {
this.href = 'data:text/plain;charset=utf-8,'
+ encodeURIComponent(html.value);
};
};
main();
</script>
</head>
<body>
<div id="txtWrap">
<textarea id="txt"></textarea>
</div>
<a href="" id="link" download="code.html">Download Above Code</a>
</body>
</html>
...
window.onload=函数(){
var txt=document.getElementById('html');
txt.value=window.onload+'';
document.getElementById('link').onclick=函数(代码){
this.href='data:text/plain;charset=utf-8,'
+encodeURIComponent(html.value);
};
};
main();
下面的脚本使用了一些HTML5功能
函数saveTextAsFile()
{
var textToSave=document.getElementById(“InputExttosave”).value;
var textToSaveAsBlob=新Blob([textToSave],{type:“text/plain”});
var textToSaveAsURL=window.URL.createObjectURL(textToSaveAsBlob);
var fileNameToSaveAs=document.getElementById(“inputFileNameToSaveAs”).value;
var downloadLink=document.createElement(“a”);
downloadLink.download=fileNameToSaveAs;
downloadLink.innerHTML=“下载文件”;
downloadLink.href=textToSaveAsURL;
downloadLink.onclick=destroyClickedElement;
downloadLink.style.display=“无”;
document.body.appendChild(下载链接);
downloadLink.click();
}
函数销毁ClickedElement(事件)
{
document.body.removeChild(event.target);
}
函数loadFileAsText()
{
var fileToLoad=document.getElementById(“fileToLoad”).files[0];
var fileReader=newfilereader();
fileReader.onload=函数(fileLoadedEvent)
{
var textFromFileLoaded=fileloadevent.target.result;
document.getElementById(“inputTextToSave”).value=textFromFileLoaded;
};
readAsText(fileToLoad,“UTF-8”);
}
要保存的文本:
要另存为的文件名:
将文本保存到文件
选择要加载的文件:
加载所选文件
最终更新和完成
这是我自己做的。无需查询,这是最简单、最简洁的方法,可以通过按钮将其保存为HTML或TXT格式,并使用您选择的文件名。现在我只需改天再进行加载
如果你问我,我提出的最佳解决方案就是这个。
<html>
<head>
<style type="text/css">...</style>
<script type="text/JavaScript">
window.onload = function() {
var txt = document.getElementById('html');
txt.value = window.onload + '';
document.getElementById('link').onclick = function(code) {
this.href = 'data:text/plain;charset=utf-8,'
+ encodeURIComponent(html.value);
};
};
main();
</script>
</head>
<body>
<div id="txtWrap">
<textarea id="txt"></textarea>
</div>
<a href="" id="link" download="code.html">Download Above Code</a>
</body>
</html>
示例:
现在,我提出了一个更好的解决方案,可以使用Query自动添加.html到名称中,从而将其固定到html文件中
<html>
<head>
<script language="Javascript" >
function download(filename, text) {
var pom = document.createElement('a');
pom.setAttribute('href', 'data:text/plain;charset=utf-8,' +
encodeURIComponent(text));
pom.setAttribute('download', filename);
pom.style.display = 'none';
document.body.appendChild(pom);
pom.click();
document.body.removeChild(pom);
}
</script>
</head>
<body>
<script src="jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<form onsubmit="download(this['name'].value, this['text'].value)">
<textarea rows="10" cols="70" name="text" placeholder="Type your text here:"></textarea>
<br>
<input type="text" name="name" id="txt" value="" placeholder="File Name">
<input type="submit" id="btn" value="Save As">
</form>
<script type="text/javascript">
jQuery("#btn").on('click', function() {
var $txt = jQuery("#txt");
var caretPos = $txt[0].selectionStart;
var textAreaTxt = $txt.val();
var txtToAdd = ".html";
$txt.val(textAreaTxt.substring(0, caretPos) + txtToAdd + textAreaTxt.substring(caretPos) );
});
</script>
</body>
</html>
函数下载(文件名、文本){
var pom=document.createElement('a');
setAttribute('href','data:text/plain;charset=utf-8',+
编码组件(文本);
setAttribute('下载',文件名);
pom.style.display='none';
文件.正文.附件(pom);
pom.click();
文件.body.removeChild(pom);
}
jQuery(#btn”).on('click',function(){
var$txt=jQuery(“#txt”);
var caretPos=$txt[0].selectionStart;
var textAreaTxt=$txt.val();
var txtToAdd=“.html”;
$txt.val(textAreaTxt.substring(0,caretPos)+txtToAdd+textAreaTxt.substring(caretPos));
});
使用HTML5下载和文件API。您的main()
函数不存在,您的.onclick
函数不带参数,并且html
未定义。允许您提供一个文件名和mime(如text/html)。另外,这在IE中根本不起作用,而且Edge不会“尊重”提供的文件名。您的代码有一个小问题。就是这样,它保存为TXT文件,我希望它保存为HTML文件。如何将其另存为HTML文件?使用纯JS无法编写文件,但可以使用HTML5 W3C API。。。1.2.3.正如您在上面的示例中看到的,我确实将其保存为HTML文件。唯一的问题是它被命名为“code.html”,除非我更改源代码值,但是我希望它在页面中是可更改的,但是使用该代码,我不能给它我想要的名称,例如MyName.html,所以我需要的是一种将文件保存为html的方法,而不是下载它,因为下载时,你不能像保存为那样自由添加自己的名称。我想的更像是,如果按钮正在调用一个框在名称之前和之后,它将与我创建的函数一起保存。在那里,你可以毫无问题地将其保存为HTML。但如何做到这一点呢?