0

我在小米浏览器下遇到了我的代码问题。我找不到将我的页面的一部分下载为 html 的 vanilla javascript 解决方案。在 Chrome 或 Firefox 上运行的代码在 Mi 中不起作用。我的部分代码:

var elHtml = ""+document.getElementById("hlavicka").innerHTML +""+ document.getElementById("stranka").innerHTML + "";
        
    if (navigator.msSaveBlob) { // IE 10+
        navigator.msSaveBlob(new Blob([elHtml], { type: mimeType + ';charset=utf-8;' }), 文件名);
    } 别的 {
        var link = document.createElement('a');
      document.body.appendChild(link);
        哑剧类型 = 哑剧类型 || '文本/普通';

        link.setAttribute('下载', 文件名);
        link.setAttribute('href', 'data:' + mimeType + ';charset=utf-8,' + encodeURIComponent(elHtml));
        链接.click();
    }

你能给我一个提示吗?

4

2 回答 2

0

我有同样的问题,我找到了解决方案:小米浏览器不支持下载文件作为数据URI,所以你必须将文件上传到你的服务器(我使用AJAX和php),然后将href属性设置为文件位置在您的服务器上: element.setAttribute('href', '/mifiles/'+filename);

用户下载后,不要忘记从服务器中删除文件。

于 2021-09-22T09:22:57.907 回答
0

好吧,使用纯 JavaScript,您可以:

var yourElement = document.getElementById("yourElement");

download("example.html", yourElement.outerHTML);

function download(filename, text) {
    var element = document.createElement('a');
    element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
    element.setAttribute('download', filename);

    element.style.display = 'none';
    document.body.appendChild(element);

    element.click();

    document.body.removeChild(element);
}

只需将yourElement变量更改为您要下载的元素。该download()函数将自动下载带有 HTML(在该元素内)的文件作为html文件。您可以通过更改函数中的文件名参数来使用不同的文件格式。

于 2020-06-29T21:23:47.257 回答