Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.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 加载保存文本区域不工作,如图所示_Javascript_Html - Fatal编程技术网

Javascript 加载保存文本区域不工作,如图所示

Javascript 加载保存文本区域不工作,如图所示,javascript,html,Javascript,Html,我得到了一些代码并尝试使用它,但当我尝试它时,它并没有像我预期的那样工作。您能否帮助修复代码,以便弹出一个对话框来保存文件,而不是自动下载。它可能只需要稍微调整一下函数 这是HTML <table> <tr><td>Text to Save:</td></tr> <tr> <td colspan="3"> <textarea id="inputText

我得到了一些代码并尝试使用它,但当我尝试它时,它并没有像我预期的那样工作。您能否帮助修复代码,以便弹出一个对话框来保存文件,而不是自动下载。它可能只需要稍微调整一下函数

这是HTML

<table>
    <tr><td>Text to Save:</td></tr>
    <tr>
        <td colspan="3">
            <textarea id="inputTextToSave" style="width:512px;height:256px"></textarea>
        </td>
    </tr>
    <tr>
        <td>Filename to Save As:</td>
        <td><input id="inputFileNameToSaveAs"></input></td>
        <td><button onclick="saveTextAsFile()">Save Text to File</button></td>
    </tr>
    <tr>
        <td>Select a File to Load:</td>
        <td><input type="file" id="fileToLoad">
        <td><button onclick="loadFileAsText()">Load Selected File</button><td>
    </tr>
</table>
编辑:这个问题很独特,因为我不是问如何强制下载,而是问如何打开“另存为”对话框,就像保存图像时出现的对话框一样

编辑:使用ActiveX可能会有答案吗


编辑:似乎没有办法用ActiveX实现这一点,但程序仍然有一个文件名框。为什么程序会忽略这一点?下载的文件名是一个(看起来像什么)随机生成的数字?

如果您要求获得传统的“另存为…”对话框,则无法通过JavaScript。浏览器根据其默认设置下载文件,这些默认设置可能直接指向默认下载位置,也可能提供一个对话框,但这同样是基于客户端的设置,而不是JavaScript。

原始文件确实按预期显示了文件下载对话框。(如果它不适合您,那么这可能是由于您的浏览器设置。)可能的副本很可能是您的浏览器设置。你只需转到你的设置并配置你的浏览器,它就会询问你下载到哪里。这不是OP要做的。OP询问如何对其进行编码,以便提示任何用户。这把小提琴很好用,只有
加载选定的文件
按钮不起作用这不是真的,有些浏览器默认会这样做,但总有办法配置它。默认情况下哪些浏览器会这样做?如何配置它以使其在所有浏览器中都能工作。如果你不能回答这个问题,请收回你的否决票。我没有否决票,是别人否决的。我不是说你可以在你的服务器上的某个地方配置它,我是说浏览器作为你用来下载文件的客户端是可配置的。另外,如果你想要一个默认情况下所有执行此操作的浏览器的列表,我会重定向(“www.google.com”)给你。我理解你的意思(用户可以配置他们的浏览器将文件保存到他们想要的位置)。这不是OP的要求。OP需要为所有用户生成一个对话框的代码,在下载时提示他们选择文件的位置和名称。对,然后你说:“浏览器将文件下载到其默认下载位置-不提供保存对话框”,这是不真实的,因为它取决于用户浏览器配置的设置。
function saveTextAsFile() {
    var textToWrite = document.getElementById("inputTextToSave").value;
    var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
    var fileNameToSaveAs = document.getElementById("inputFileNameToSaveAs").value;
    var downloadLink = document.createElement("a");
    downloadLink.download = fileNameToSaveAs;
    downloadLink.innerHTML = "Download File";
    if (window.webkitURL != null) {
        // Chrome allows the link to be clicked
        // without actually adding it to the DOM.
        downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
    } else {
        // Firefox requires the link to be added to the DOM
        // before it can be clicked.
        downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
        downloadLink.onclick = destroyClickedElement;
        downloadLink.style.display = "none";
        document.body.appendChild(downloadLink);
    }
    downloadLink.click();
}

function destroyClickedElement(event) {
    document.body.removeChild(event.target);
}

function loadFileAsText() {
    var fileToLoad = document.getElementById("fileToLoad").files[0];
    var fileReader = new FileReader();
    fileReader.onload = function(fileLoadedEvent) {
        var textFromFileLoaded = fileLoadedEvent.target.result;
        document.getElementById("inputTextToSave").value = textFromFileLoaded;
    };
    fileReader.readAsText(fileToLoad, "UTF-8");
}