/* 2 功能:生成博客目录的JS工具 3 测试:IE8,火狐,google测试通过 6 */ 7 var BlogDirectory = { 8 /* 9 获取元素位置,距浏览器左边界的距离(left)和距浏览器上边界的距离(top) 10 */ 11 getElementPosition:function (ele) { 12 var topPosition = 0; 13 var leftPosition = 0; 14 while (ele){ 15 topPosition += ele.offsetTop; 16 leftPosition += ele.offsetLeft; 17 ele = ele.offsetParent; 18 } 19 return {top:topPosition, left:leftPosition}; 20 }, 21 22 /* 23 获取滚动条当前位置 24 */ 25 getScrollBarPosition:function () { 26 var scrollBarPosition = document.body.scrollTop || document.documentElement.scrollTop; 27 return scrollBarPosition; 28 }, 29 30 /* 31 移动滚动条,finalPos 为目的位置,internal 为移动速度 32 */ 33 moveScrollBar:function(finalpos, interval) { 34 35 //若不支持此方法,则退出 36 if(!window.scrollTo) { 37 return false; 38 } 39 40 //窗体滚动时,禁用鼠标滚轮 41 window.onmousewheel = function(){ 42 return false; 43 }; 44 45 //清除计时 46 if (document.body.movement) { 47 clearTimeout(document.body.movement); 48 } 49 50 var currentpos =BlogDirectory.getScrollBarPosition();//获取滚动条当前位置 51 52 var dist = 0; 53 if (currentpos == finalpos) {//到达预定位置,则解禁鼠标滚轮,并退出 54 window.onmousewheel = function(){ 55 return true; 56 } 57 return true; 58 } 59 if (currentpos < finalpos) {//未到达,则计算下一步所要移动的距离 60 dist = Math.ceil((finalpos - currentpos)/10); 61 currentpos += dist; 62 } 63 if (currentpos > finalpos) { 64 dist = Math.ceil((currentpos - finalpos)/10); 65 currentpos -= dist; 66 } 67 68 var scrTop = BlogDirectory.getScrollBarPosition();//获取滚动条当前位置 69 window.scrollTo(0, currentpos);//移动窗口 70 if(BlogDirectory.getScrollBarPosition() == scrTop)//若已到底部,则解禁鼠标滚轮,并退出 71 { 72 window.onmousewheel = function(){ 73 return true; 74 } 75 return true; 76 } 77 78 //进行下一步移动 79 var repeat = "BlogDirectory.moveScrollBar(" + finalpos + "," + interval + ")"; 80 document.body.movement = setTimeout(repeat, interval); 81 }, 82 83 htmlDecode:function (text){ 84 var temp = document.createElement("div"); 85 temp.innerHTML = text; 86 var output = temp.innerText || temp.textContent; 87 temp = null; 88 return output; 89 }, 90 91 /* 92 创建博客目录, 93 id表示包含博文正文的 div 容器的 id, 94 mt 和 st 分别表示主标题和次级标题的标签名称(如 H2、H3,大写或小写都可以!), 95 interval 表示移动的速度 96 */ 97 createBlogDirectory:function (id, mt, st, interval){ 98 //获取博文正文div容器 99 var elem = document.getElementById(id); 100 if(!elem) return false; 101 //获取div中所有元素结点 102 var nodes = elem.getElementsByTagName("*"); 103 //创建博客目录的div容器 104 var divSideBar = document.createElement('DIV'); 105 divSideBar.className = 'sideBar'; 106 divSideBar.setAttribute('id', 'sideBar'); 107 var divSideBarTab = document.createElement('DIV'); 108 divSideBarTab.setAttribute('id', 'sideBarTab'); 109 divSideBar.appendChild(divSideBarTab); 110 var h2 = document.createElement('H2'); 111 divSideBarTab.appendChild(h2); 112 var txt = document.createTextNode('目录导航'); 113 h2.appendChild(txt); 114 var divSideBarContents = document.createElement('DIV'); 115 divSideBarContents.style.display = 'none'; 116 divSideBarContents.setAttribute('id', 'sideBarContents'); 117 divSideBar.appendChild(divSideBarContents); 118 //创建自定义列表 119 var dlist = document.createElement("dl"); 120 divSideBarContents.appendChild(dlist); 121 var num = 0;//统计找到的mt和st 122 mt = mt.toUpperCase();//转化成大写 123 st = st.toUpperCase();//转化成大写 124 //遍历所有元素结点 125 for(var i=0; i

2019年让程序员崩溃的 60 个瞬间,笑死我了

前方高能,轻松一刻,我看了以后是笑疯了。

1. 公司实习生找 Bug

2. 在调试时,将断点设置在错误的位置

3. 当我有一个很棒的调试想法时

4. 偶然间看到自己多年前写的代码

5. 当我第一次启动我的单元测试时

6. 数据库的 Delete 语句忘了使用限定词 where...

7. 明明是个小 bug,但就是死活修不好......

8. 当我尝试调整生产数据库中的一些东西时

9. 好像真的没人发现我产品里的 bug......

10. 下班前我还有一项任务没有完成

11. 产品还没测试直接投入生产时

12. 调试过多线程的都会懂!

13. 当我以为已捕获了所有可能的异常... 的时候

14. 当我试图清理几行所谓的旧代码的时候

15. 当有人让我帮他调试代码时

16. 当程序员第一次向老板演示项目时

17. 结对编程,需要再了解一下吗?

18. 当你看到你几个月没碰过的代码

19. 接到产品经理电话的我睡意全无!

20. 测试的时候一切 ok,真正上线的时候……

21. 作为一个程序员,拷问灵魂的时刻到了!

22. 当年学 C 语言的过程

23. 当前端程序员想改后台代码时,后台程序员的样子

24. 调试 bug

25. 正在调试,突然内存溢出了

26. 需求文档又改了

27. 苦逼的后端工程师

28. 后端工程师做 UI 的活

29. 前后端分离开发

30. 单身互联网狗的一天

31. 在生产环境做 hotfix

32. 刚调稳定的系统,公司叕空降了一位架构师,又双叕要重构现有系统……

33. 当程序员听客户说还在用 IE 时

34. 当黑客拿到 root 权限之后

35. 代码进入循环分支后

36. 新手程序员第一次做项目的过程

37. 零错误零警告一次编译通过

38. 春节前后上班写代码状态是这样的

39. 自信爆棚地去重构一个看似简单的模块

40. 被老板委派接手刚刚离职同事的项目...

41. 当他们要求我测试所有应用功能时

42. 准备下班的时候, 测试又提 bug 过來了…

43. 使用新框架却忘记阅读文档

44. 测试实习生的代码

45. 网络延迟的危害...

46. 测试刚写完的代码

47. delete 时,忘记加 where 条件了

48. 轻量级架构遇到重量级需求

49. 当我以为我修复了一个 Bug

50. 当我看实习生编码

51. 首次在 IE 中测试我的网站

52. 当我第一次测试我的代码时

53. 新手调试 CSS

54. 提前交付客户要求

55. 我设计的接口 和 别人调用我的接口 (好疼)

56. try-catch 在错误的地方

57. 修改一个小 bug,却把服务器弄宕机了

58. 当我推错了分支

59. 工作中经常被打断

60. 高级开发人员作为一个团队进行编程时

61. 能一个手指完成的绝不用两只手系列

62. 高级开发人员重构代码

大家开心就好,觉得有趣的话,欢迎给个好看,觉得特别有趣的话,欢迎转发给你的朋友们。


关注公众号:「Java知己」,每天更新Java知识哦,期待你的到来!

  • 发送「面试」,领取BATJ面试资料、面试攻略内容。
  • 发送「1024」,免费领取 30 本经典编程书籍。
  • 发送「Group」,与 10 万程序员一起进步。
  • 发送「JavaEE实战」,领取《JavaEE实战》系列视频教程。
  • 发送「玩转算法」,领取《玩转算法》系列视频教程。

Java知己

posted @ 2019-09-19 15:19  我的人生  阅读(2580)  评论(0编辑  收藏  举报