Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我怎样才能做到这一点;另存为HTML“;而不是它现在的样子;以HTML格式下载;?_Javascript_Html_File_Download_Save - Fatal编程技术网

Javascript 我怎样才能做到这一点;另存为HTML“;而不是它现在的样子;以HTML格式下载;?

Javascript 我怎样才能做到这一点;另存为HTML“;而不是它现在的样子;以HTML格式下载;?,javascript,html,file,download,save,Javascript,Html,File,Download,Save,我正在做一个在线网页编辑器,我需要这个。 如何将其转换为“另存为”功能而不是“下载功能”?不同之处在于,在“下载为”中,您无法决定它应该是什么名称,但在“另存为”中,您可以在保存文件之前决定保存文件名 那么如何将其设置为“另存为”,而不是“下载为”? PS:如果你能帮我添加一个“加载文件”按钮也可以,那就太好了。 <html> <head> <style type="text/css">...</style> <scrip

我正在做一个在线网页编辑器,我需要这个。 如何将其转换为“另存为”功能而不是“下载功能”?不同之处在于,在“下载为”中,您无法决定它应该是什么名称,但在“另存为”中,您可以在保存文件之前决定保存文件名

那么如何将其设置为“另存为”,而不是“下载为”?

PS:如果你能帮我添加一个“加载文件”按钮也可以,那就太好了。

<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。但如何做到这一点呢?