找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23198|回复: 6

[原创代码] hta 实现复制网页内容到剪贴板

[复制链接]
发表于 2015-2-26 15:25:28 | 显示全部楼层 |阅读模式
本帖最后由 CrLf 于 2015-2-26 15:45 编辑

写这么长是为了消除 cookie 提示
  1. <!--
  2. 复制网址,再双击此文件即可复制文本到剪贴板,示例网址:
  3. http://www.hgamecn.com/htmldata/article/2734.html
  4. -->

  5. <HTA:APPLICATION WINDOWSTATE="minimize" SHOWINTASKBAR="no"/>

  6. <iframe id=copyhtml onload="copyhtml(this)"></iframe>

  7. <script>
  8. var ws=new ActiveXObject('WScript.Shell')
  9. username = ws.ExpandEnvironmentStrings('%username%')
  10. //取得用户名

  11. var sSID = getssid(username)
  12. //取得ssid

  13. var name = 'HKEY_USERS\\'+sSID+'\\'+
  14.                 'Software\\Microsoft\\Windows\\CurrentVersion\\'+
  15.                 'Internet Settings\\Zones\\3\\1A10'
  16. //取得注册表地址

  17. var bak = readreg(name)
  18. //备份注册表信息

  19. writereg(name,0)
  20. //改写注册表信息,以避免 cookie 提示

  21. var url = clipboardData.getData("text")
  22. //取得剪贴板中的网址

  23. document.getElementById('copyhtml').src = url
  24. //将 iframe 指向该网址

  25. window.onbeforeunload = function(){
  26.         writereg(name,bak)
  27.         //结束时还原注册表信息
  28. }

  29. setTimeout(close,15000)
  30. //15秒后一定会关闭并触发 onbeforeunload

  31. function getssid(username){
  32.         var wbemServices = GetObject('winmgmts:\\\\.')
  33.         var wbemObjectSet = wbemServices.execquery("select sid from win32_userAccount where name='"+username+"'")
  34.         var sSID = wbemObjectSet.ItemIndex(0).sid
  35.         return sSID
  36. }

  37. function readreg(name){
  38.         var ws = new ActiveXObject('WScript.Shell')
  39.         return ws.RegRead(name)
  40. }

  41. function writereg(name,value){
  42.         var ws = new ActiveXObject('WScript.Shell')
  43.         return ws.RegWrite(name,value)
  44. }

  45. function copyhtml(iframe){
  46.         clipboardData.setData('text',iframe.contentWindow.document.documentElement.innerText)
  47.         //将网页内容保存到剪贴板

  48.         close()
  49.         //关闭窗口
  50. }
  51. </script>
复制代码
 楼主| 发表于 2015-2-26 15:57:19 | 显示全部楼层
得到的结果是纯文本,不带格式
发表于 2015-2-26 16:07:28 | 显示全部楼层
已测试成功运行,但有个问题,无法保存空行,

比如原网址
  1. 被称为“天空之城”的天界。居民被称为“天人”。

  2. Caelum Urbs和地上不同,应有尽有。
复制代码
复制剪切板里的就是:
  1. 被称为“天空之城”的天界。居民被称为“天人”。
  2. Caelum Urbs和地上不同,应有尽有。
复制代码
少了空行。能否再修改下,连同这些空行也保存下呢。
 楼主| 发表于 2015-2-26 16:28:50 | 显示全部楼层
本帖最后由 CrLf 于 2015-2-26 16:30 编辑

回复 3# 867258173


    那是通过 margin 设置的间距,不是真正的换行,所以 innerText 读不到
发表于 2015-2-26 16:39:26 | 显示全部楼层
回复 4# CrLf

这样啊,那就这样吧,有了这个以后直接复制粘贴方便多了。感谢(^-^)
发表于 2018-10-14 22:15:19 | 显示全部楼层
怎么弄呢?网址放在哪里呢?
发表于 2019-1-2 20:35:58 | 显示全部楼层
如果复制带格式文本到剪贴板,该如何修改?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:52 , Processed in 0.011425 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表