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='width: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='width:400px;height:100px;'><p>"
+d.name+
"文件生成成功!</p><p>访问路径为:</p><p> "
+d.url+
"</p></div>"
,
{
title :
'消息提示'
}
);
} else {
new
Boxy(
"<div style='width:300px;height:100px;'><p>"
+data.data+
"</p></div>"
,
{
title :
'消息提示'
}
);
}
}
}
}
);
}catch
(err)
{}
}
//-->
</
script
>
服务器处理的action代码我就不贴出来了,用I/O就好了。