Osc*_*Ryz 12 javascript document server-side client-side html-generation
Javascript可以操纵浏览器显示的文档,因此以下内容:
<script>
document.write("<table><tr><td>Hola</td><td>Adios</td></tr></table>");
</script>
Run Code Online (Sandbox Code Playgroud)
将使浏览器显示一个表,就像它是原始HTML文档一样:
<table>
<tr>
<td>Hola</td>
<td>Adios</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
有没有办法保存/提供此文档内容?
目前我们使用Ext-js生成一些很好的报告,我想做的是拥有它的"text/html"版本(我的意思是,不需要javascript的东西)
因此,在页面的最后,我将添加一个按钮:"另存为blaba",文档应显示文本/纯文本版本.
我现在能想到的唯一方法是将内容写入javascript变量,如:
var content = document.toString(); // or something magic like that.
// post it to the server
Run Code Online (Sandbox Code Playgroud)
然后将该值发布到服务器,并让服务器显示该值.
<%=request.getParameter("content-text")%>
Run Code Online (Sandbox Code Playgroud)
但看起来很棘手.
还有其他选择吗?
编辑
好的,我几乎得到了它.现在我只需要弹出新窗口,这样选项"你想保存它吗"
这是我到目前为止所得到的
<script>
document.write("<div id='content'><table><tr><td>Hola</td><td>Adios</td></tr></table></div>");
function saveAs(){
var sMarkup = document.getElementById('content').innerHTML;
var oNewDoc = document.open('application/vnd.ms-excel');
oNewDoc.write( sMarkup + "<hr>" );
oNewDoc.close();
}
</script>
<input type="button" value="Save as" onClick="saveAs()"/>
Run Code Online (Sandbox Code Playgroud)
这条线:
var oNewDoc = document.open('application/vnd.ms-excel');
Run Code Online (Sandbox Code Playgroud)
应指定新的内容类型,但它将被忽略.
小智 4
这是以 .xls 格式打开表格内容的升级版本。
<head>
<script>
document.write("<table id='targetTable'><tr><td>Hola</td><td>Adios</td></tr><tr><td>eins</td><td>zwei</td></table>");
function saveAsXLS()
{
var xlObj = new ActiveXObject("Excel.Application");
var xlBook = xlObj.Workbooks.Add();
var xlSheet = xlBook.Worksheets(1);
for (var y=0;y<targetTable.rows.length;y++) // targetTable=id of the table
{
for (var x=0;x<targetTable.rows(y).cells.length;x++)
{
xlSheet.Cells(y+1,x+1)=targetTable.rows(y).cells(x).innerText;
}
}
xlObj.Visible=true;
document.write("The table contents are opened in a new Excel sheet.");//Print on webpage
}
</script>
</head>
<body>
<input type="button" value="Open table in Excel!" onclick="saveAsXLS()"/>
</body>
Run Code Online (Sandbox Code Playgroud)
此代码在 IE6 中进行了测试,并使用 ActiveXObject 控件。
希望这有助于回答您的问题。让我知道您是否遇到任何问题。
和平。
| 归档时间: |
|
| 查看次数: |
30494 次 |
| 最近记录: |