2012-04-03
今天实现了一个需求,主题是将浏览中的网页生成html保存起来,记录访问url,挂在公司网站上做案例。
首先忙活了N久的是去搜索生成html的js函数。
什么IE自带的ActiveX,js插件,js的winow.print();函数调用打印机打印页面等
最后结果是怎么搞都是不行。
就快到穷途末路时,在stackoverflow.com网站看到一条问题,也是与生成html相关的。
牛人解决方案如下:
使用jQuery
// 看到这句我顿时哑语了,这么简单的方法我怎么想不到
var dom = $("html").html();//获取html节点的内容
//alert(dom);
$.post("exportCase.do",{dom:$("html").html()});//服务器接受请求处理,将html内容输出为xxx.htm保存到你想指定的路径
最后我借鉴与此,写了一个完善的js函数:
<script type="text/javascript">
<!--
function exportCase(){
try{
var filename = prompt("请输入要生成的html文件名:","");
if(undefined==filename || ""==filename){
new Boxy("<div style='300px;height:100px;'><p>文件名为空,生成失败</p></div>", {title : '消息提示'});
return;
}
//alert("export filename:"+filename);
$j.ajax({
type : "post",
url : "exportCaseAjax.do",
cache : "false",
data : {
"dom":$j("html").html(),
"filename":filename,
"rnd": ajaxRandom()
},
dataType:"json",
success : function(data, textStatus) {
if(!isUndefined(data)){
var code = data.code;
//alert(code);
if(code==0){
var d = data.data;
new Boxy("<div style='400px;height:100px;'><p>"+d.name+"文件生成成功!</p><p>访问路径为:</p><p> "+d.url+"</p></div>", {title : '消息提示'});
} else {
new Boxy("<div style='300px;height:100px;'><p>"+data.data+"</p></div>", {title : '消息提示'});
}
}
}
});
}catch(err){}
}
//-->
</script>
服务器处理的action代码我就不贴出来了,用I/O就行了。