【问题标题】:Getting content from html从 html 中获取内容
【发布时间】:2016-07-17 15:56:33
【问题描述】:

我想像这样从 html 下载内容。它是 ember 应用程序。

<body>
<div id="app"></div>
</body>

当我点击检查元素时,它显示如下:

<body>
  <div id="app" class="emeber-application">
  <div id="ember344" class="ember-view">
  <div class="main header>..</div>
  ....
</body>

那么,是否有可能(以及如何)使用 JavaScript 获取此内容并将其写入文件?不手动复制粘贴。

对不起我的英语。

【问题讨论】:

  • 你能告诉我怎么做吗?
  • "...是否可以使用 JavaScript 获取此内容并将其写入文件?" 是的。但可能不是来自浏览器。基于浏览器的 JavaScript 有两个重大限制:
  • 1.除非其他来源明确允许访问,否则您无法访问来自其他来源(松散地,域)的内容。 (这称为同源策略;源授予例外的方式是通过跨源资源共享。)如果允许您的源访问来自其他源的内容,您可以通过“ajax”(可能使用XMLHttpRequest 对象或它的库包装器,如 jQuery 的 $.ajax)。
  • 2.出于安全原因,您无法访问运行浏览器的计算机的文件系统。您可以提供一个文件,但用户是告诉浏览器将其写入磁盘的那个人,您的代码将不知道它是在哪里写入的。
  • 在浏览器之外,您可以使用任何具有合理 HTTP 和文件功能的 JavaScript 环境(可能还有像 PhantomJS 这样的无头浏览器工具),例如 NodeJS 或 Java JVM(JavaScript 可用于Java JVM,尽管 Java 和 JavaScript 是完全不同的语言)。

标签: javascript html ember.js


【解决方案1】:

作为 T.J.克劳德说直接从浏览器保存文件是不可能的。 另一方面,可以使用数据 URI 下载文件:

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

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

    element.click();

    document.body.removeChild(element);
}

【讨论】:

    猜你喜欢
    • 2013-10-29
    • 2015-02-08
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2016-12-15
    • 2014-08-21
    相关资源
    最近更新 更多