2

这个问题带来了一个新问题:

我有一个 html 页面,当用户按下“保存”按钮时,我需要它来更改内容类型,以便浏览器提示将文件保存到磁盘

我一直在服务器端这样做以提供页面的“excel”版本(基本上是一个 html 表)

    <c:if test="${page.asExcelAction}">
    <% 
        response.setContentType("application/vnd.ms-excel");
    %>

我现在想做的是做同样的事情,但是在客户端使用 javacript 但我无法做到。

这是我到目前为止所得到的:

<html>
    <head>
        <script>
            function saveAs(){
                var sMarkup =  document.getElementById('content').innerHTML; 
                //var oNewDoc = document.open('application/vnd.ms-excel');        
                var oNewDoc = document.open('text/html');        
                oNewDoc.write( sMarkup );
                oNewDoc.close();
            }
        </script>
    </head>
<body>
<div id='content'>
    <table>
        <tr>
            <td>Stack</td>
            <td>Overflow</td>
        </tr>
    </table>
</div>    
<input type="button" value="Save as" onClick="saveAs()"/>
</body>
</html>
4

2 回答 2

0

您可以尝试使用隐藏的 iframe。当用户单击保存时,将 iframe src 更新到您存储/生成 excel 文件的任何位置。应该会弹出一个保存对话框。

于 2009-09-25T20:34:06.217 回答
0

正如您发布的链接中所说,当前支持的唯一 mime 类型(至少在 IE 中)是纯文本和 HTML。您必须进行服务器端调用才能使用不同的 mime 类型。您也许可以使用 ActiveX 控件,但这不是跨浏览器兼容的。

于 2010-04-08T16:24:14.963 回答