Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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页面下载表格内容(字符串),无需物理文件_Javascript_Html - Fatal编程技术网

Javascript 从Html页面下载表格内容(字符串),无需物理文件

Javascript 从Html页面下载表格内容(字符串),无需物理文件,javascript,html,Javascript,Html,我在事务结束时在HTML页面上生成一些重要信息 <html> <head> <script type="text/javascript"> function downloadReference(){ } </script> </head> <body> <p> Hello! Thank you for your interest. </p> <table

我在事务结束时在HTML页面上生成一些重要信息

<html>
<head>
  <script type="text/javascript">
    function downloadReference(){
    }
  </script>
</head>
<body>
  <p>
  Hello! Thank you for your interest.
  </p>
  <table style="background-color:#ccffcc;border: 1px solid #00cc00" id="referencedata">
    <tr>
        <td><b>Interest Received Date:</b></td>
        <td>22 March 2018</td>
    </tr>
    <tr>
        <td><b>Confirmation Number:</b></td>
        <td>J4835K3344</td>
    </tr>
  </table>
  <br/>
  <a href="#" onclick="return downloadReference();" download="Reference.html">Download this info!</a>
</body>
</html>

函数downloadReference(){
}

你好谢谢你的关注。

收到利息日期: 2018年3月22日 确认号码: J4835K3344
现在,我想给用户一个选项来下载这些信息供他参考。我不想在服务器端创建文件


我知道在HTML5中,我们可以在anchor标记中提供download属性,以允许用户下载文件,但我如何动态生成内容而不引用任何物理文件?

感谢@bloodyKnuckles的提示。为将来需要这个的人写答案

我已将id添加到我的定位标记:

<a href="#" id="dl"...
返回true是进行下载所必需的


我们不支持像IE这样死气沉沉的浏览器,所以不用担心。

你可以做一些类似的事情,这将非常简单。您需要在某个时刻将数据传递到数据url。如果它是用JS呈现的,我建议将数据传递给下面的示例中的函数,并使用侦听器而不是onclick。否则,您可以将其编码为链接上的数据属性,并以这种方式传递。我很高兴更新以更好地解释

function generateFile(dataurl, filename) {
  // create a hidden anchor
  var link = document.createElement("a");
  link.href = dataurl; 
  link.setAttribute("download", filename); 
  // programatically click dynamic anchor
  var mouse = document.createEvent("MouseEvents");
  mouse.initEvent("click", false, true);
  link.dispatchEvent(mouse);
  return false;
}

document.getElementById('download').onclick = function() {
  generateFile("data:text/html, <h1>Your HTML</h1>", "reference.html");
}
函数generateFile(数据URL,文件名){
//创建一个隐藏的锚
var link=document.createElement(“a”);
link.href=dataurl;
link.setAttribute(“下载”,文件名);
//以编程方式单击“动态锚点”
var mouse=document.createEvent(“MouseEvents”);
mouse.initEvent(“单击”,false,true);
link.dispatchEvent(鼠标);
返回false;
}
document.getElementById('download')。onclick=function(){
generateFile(“数据:text/html,您的html”,“reference.html”);
}

您很可能正在寻找数据URI,但浏览器支持确实有所不同。尤其是IE和Edge。这有帮助吗?在内存中创建文件供用户下载,而不是通过服务器:
function generateFile(dataurl, filename) {
  // create a hidden anchor
  var link = document.createElement("a");
  link.href = dataurl; 
  link.setAttribute("download", filename); 
  // programatically click dynamic anchor
  var mouse = document.createEvent("MouseEvents");
  mouse.initEvent("click", false, true);
  link.dispatchEvent(mouse);
  return false;
}

document.getElementById('download').onclick = function() {
  generateFile("data:text/html, <h1>Your HTML</h1>", "reference.html");
}