Board logo

标题: [原创代码] hta 实现复制网页内容到剪贴板 [打印本页]

作者: CrLf    时间: 2015-2-26 15:25     标题: hta 实现复制网页内容到剪贴板

本帖最后由 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>
复制代码

作者: CrLf    时间: 2015-2-26 15:57

得到的结果是纯文本,不带格式
作者: 867258173    时间: 2015-2-26 16:07

已测试成功运行,但有个问题,无法保存空行,

比如原网址
  1. 被称为“天空之城”的天界。居民被称为“天人”。
  2. Caelum Urbs和地上不同,应有尽有。
复制代码
复制剪切板里的就是:
  1. 被称为“天空之城”的天界。居民被称为“天人”。
  2. Caelum Urbs和地上不同,应有尽有。
复制代码
少了空行。能否再修改下,连同这些空行也保存下呢。
作者: CrLf    时间: 2015-2-26 16:28

本帖最后由 CrLf 于 2015-2-26 16:30 编辑

回复 3# 867258173


    那是通过 margin 设置的间距,不是真正的换行,所以 innerText 读不到
作者: 867258173    时间: 2015-2-26 16:39

回复 4# CrLf

这样啊,那就这样吧,有了这个以后直接复制粘贴方便多了。感谢(^-^)
作者: mstsc    时间: 2018-10-14 22:15

怎么弄呢?网址放在哪里呢?
作者: tsqingfeng    时间: 2019-1-2 20:35

如果复制带格式文本到剪贴板,该如何修改?




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2