2010-05-15 28 views
0

我做了以下网页生成的交互式待办事项列表:http://robert-kent.com/todo/todo.php如何使用php/javascript刮取当前网页?

基本上,用户粘贴一个编号的待办事项清单和每个任务被放置到它自己的DIV有唯一的ID。用户可以将任务添加到任务中(通过javascript完成),并可以在任务完成后点击绿色检查来隐藏它。

我想添加一个导出按钮,它会生成一个报告,其中包含哪些任务已完成,哪些未完成,以及用户输入的注释。经过一番搜索之后,我明白我想要做的是刮掉页面,但我并没有最好的方式去做这件事。我在Google找到的许多文章和教程都涉及到了其他网站,并没有真正解释如何迭代页面上的每个div。

完整的源位置:http://pastebin.com/r7V3P5jK

有什么建议?

+4

是不是你自己的网站?那你为什么想这么做呢?为什么不仅仅使用源数据生成*报告,就像生成HTML一样? – 2010-05-15 15:49:26

+0

它只在我的网站上,所以你们可以看到它。另外,这些笔记是动态生成的,当第一次生成HTML时,我无法知道哪些任务是完整的 – Robert 2010-05-15 17:57:05

回答

1

不幸的是,提供您所描述的“导出”功能的方法完全错误。你的页面应该用一个表示需要“导出”的参数提交回服务器。然后,服务器应该将“Content-Disposition”标头设置为attachment; filename="export.txt"(或任何你想要的文件名)。

0

如果有一个div包含你想要导出的内容,你可以简单地使用innerHTML属性来导出HTML代码。例如,假设div具有'笔记'ID:

var notes = document.getElementById('notes'); 
alert(notes.innerHTML); 

现在,如何让用户实际上将实际的HTML保存在文件中?您需要将它发送到CGI或在发送回内容的服务器上使用以下标头:

Content-Disposition:attachment; filename =“export.txt”

或者,您必须使用此页上解释的方法:http://objectmix.com/javascript/314946-possible-generate-text-files-javascript.html。仅供参考:页面上解释的方法不是跨浏览器兼容的。