专栏名称: 前端JavaScript
分享 | 学习 | 交流 | 原创 分享是学习的开始;学习不必要从头开始,是从现在开始;交流能沟通你我,提高你的学识;期待你的加入!!! web前端技术交流,JavaScript,HTML5,CSS3……
目录
相关文章推荐
51好读  ›  专栏  ›  前端JavaScript

[S3-E374]定时器学习:利用定时器分解耗时任务案例

前端JavaScript  · 公众号  · Javascript  · 2017-06-29 06:35

正文

对于执行时间过长的脚本,有的浏览器会弹出警告,说页面无响应。有的浏览器会直接终止脚本。总而言之,浏览器不希望某一个代码块长时间处于运行状态,因为js是单线程的。一个代码块长时间运行,将会导致其他任何任务都必须等待。从用户体验上来说,很有可能发生页面渲染卡顿或者点击事件无响应的状态。


如果一段脚本的运行时间超过5秒,有些浏览器(比如Firefox和Opera)将弹出一个对话框警告用户该脚本“无法响应”。而其他浏览器,比如iPhone上的浏览器,将默认终止运行时间超过5秒钟的脚本。--《JavaScript忍者秘籍》

JavaScript忍者秘籍里有个很好的比喻:页面上发生的各种事情就好像一群人在讨论事情,如果有个人一直在说个不停,其他人肯定不乐意。我们希望有个裁判,定时的切换其他人来说话。


Js利用定时器来分解任务,关键点有两个。


 1.按什么维度去分解任务

 2.任务的现场保存与现场恢复


例子


要求:动态创建一个表格,一共10000行,每行10个单元格


一次性创建

   

   

<p style="line-height: 2em;"/><p style="line-height: 2em;"/><p><br/></p><p style="line-height: 2em;"/><table><p style="line-height: 2em;">    </p><tbody/><p style="line-height: 2em;"/></table><p><br/></p><p style="line-height: 2em;"><script type="text/javascript"/></p><p style="line-height: 2em;">    var tbody = document.getElementsByTagName('tbody')[0];</p><p><br/></p><p style="line-height: 2em;">    var allLines = 10000;</p><p style="line-height: 2em;">    // 每次渲染的行数</p><p><br/></p><p style="line-height: 2em;">    console.time('wd');</p><p style="line-height: 2em;">    for(var i=0; i<alllines i=""><p style="line-height: 2em;">        var tr = document.createElement('tr');</p><p><br/></p><p style="line-height: 2em;">        for(var j=0; j<10; j++){</p><p style="line-height: 2em;">            var td = document.createElement('td');</p><p><br/></p><p style="line-height: 2em;">            td.appendChild(document.createTextNode(i+','+j));</p><p style="line-height: 2em;">            tr.appendChild(td);</p><p style="line-height: 2em;">        }</p><p><br/></p><p style="line-height: 2em;">        tbody.appendChild(tr);</p><p style="line-height: 2em;">    }</p><p style="line-height: 2em;">    console.timeEnd('wd');</p><p><br/></p><p style="line-height: 2em;"/><p style="line-height: 2em;"/><p style="line-height: 2em;"/></alllines></p></blockquote><p><br/></p><p style="line-height: 1.75em;"><span style="color: rgb(255, 41, 65);">总共耗时180ms, 浏览器已经给出警告![Violation] 'setTimeout' handler took 53ms。</span></p><p><br/></p><p style="line-height: 1.75em;"><img data-s="300,640" data-type="jpeg" referrerpolicy="no-referrer" data- referrerpolicy="no-referrer" src="http://mmbiz.qpic.cn/mmbiz_jpg/DpmvoL4m0DRY7H4CQVCkynvXicA9k0q3lmdUDlSJGkMPoXqRbNWzIUxABvmx2a0q8Ax3D45ktiaNkS9PfUzgGLug/0?wx_fmt=jpeg" data-ratio="0.6359447004608295" data-w="651" style="box-shadow: none;"/></p><p><br/></p><p style="line-height: 1.75em;"><span style="font-size: 18px;"><strong>分批次动态创建</strong></span></p><blockquote><p style="line-height: 2em;"/><p style="line-height: 2em;"/><p style="line-height: 2em;"/><p style="line-height: 2em;">    <meta charset="utf-8"/></p><p style="line-height: 2em;">    </p><title/><p style="line-height: 2em;"/><p style="line-height: 2em;"/><p><br/></p><p style="line-height: 2em;"/><table><p style="line-height: 2em;">    </p><tbody/><p style="line-height: 2em;"/></table><p><br/></p><p style="line-height: 2em;"><script type="text/javascript"/></p><p style="line-height: 2em;">    var tbody = document.getElementsByTagName('tbody')[0];</p><p><br/></p><p style="line-height: 2em;">    var allLines = 10000;</p><p style="line-height: 2em;">    // 每次渲染的行数</p><p style="line-height: 2em;">    var everyTimeCreateLines = 80;</p><p style="line-height: 2em;">    // 当前行</p><p style="line-height: 2em;">    var currentLine = 0;</p><p><br/></p><p style="line-height: 2em;">    setTimeout(function renderTable(){</p><p style="line-height: 2em;">        console.time('wd');</p><p style="line-height: 2em;">        for(var i=currentLine; i<currentline i=""><p style="line-height: 2em;">            var tr = document.createElement('tr');</p><p><br/></p><p style="line-height: 2em;">            for(var j=0; j<10; j++){</p><p style="line-height: 2em;">                var td = document.createElement('td');</p><p><br/></p><p style="line-height: 2em;">                td.appendChild(document.createTextNode(i+','+j));</p><p style="line-height: 2em;">                tr.appendChild(td);</p><p style="line-height: 2em;">            }</p><p><br/></p><p style="line-height: 2em;">            tbody.appendChild(tr);</p><p style="line-height: 2em;">        }</p><p style="line-height: 2em;">        console.timeEnd('wd');</p><p><br/></p><p style="line-height: 2em;">        currentLine = i;</p><p><br/></p><p style="line-height: 2em;">        if(currentLine < allLines){</p><p style="line-height: 2em;">            setTimeout(renderTable,0);</p><p style="line-height: 2em;">        }</p><p style="line-height: 2em;">    },0);</p><p><br/></p><p style="line-height: 2em;"/><p style="line-height: 2em;"/><p style="line-height: 2em;"/></currentline></p></blockquote><p><br/></p><p style="line-height: 1.75em;"><span style="color: rgb(255, 41, 65);">这次异步按批次创建,没有耗时的警告。因为控制了每次代码在50ms内运行。实际上每80行耗时约10ms左右。这就不会引起页面卡顿等问题。</span></p><p><br/></p><p style="line-height: 1.75em;"><img data-s="300,640" data-type="jpeg" referrerpolicy="no-referrer" data- referrerpolicy="no-referrer" src="http://mmbiz.qpic.cn/mmbiz_jpg/DpmvoL4m0DRY7H4CQVCkynvXicA9k0q3l7xhmqNFia6ha7QySBKA77vRkhIMvfbCZ26Dg91tEa40lLImwPbfic5nA/0?wx_fmt=jpeg" data-ratio="1.2118380062305296" data-w="642" style="box-shadow: none;"/></p><p style="max-width: 100%; min-height: 1em; line-height: 2em; box-sizing: border-box !important; word-wrap: break-word !important;"><br/></p><blockquote style="max-width: 100%; color: rgb(62, 62, 62); font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'Microsoft YaHei', 黑体, Arial, sans-serif; font-size: 16px; line-height: 25.6px; white-space: normal; box-sizing: border-box !important; word-wrap: break-word !important; background-color: rgb(255, 255, 255);"><p style="max-width: 100%; min-height: 1em; line-height: 2em; box-sizing: border-box !important; word-wrap: break-word !important;">转自: https://segmentfault.com/a/1190000008875029<span style="max-width: 100%; font-family: 宋体, SimSun; line-height: 32px; box-sizing: border-box !important; word-wrap: break-word !important;"/></p><p style="max-width: 100%; min-height: 1em; box-sizing: border-box !important; word-wrap: break-word !important;"><span style="max-width: 100%; line-height: 2em; box-sizing: border-box !important; word-wrap: break-word !important;">作者: 香吉士</span></p></blockquote><p style="max-width: 100%; min-height: 1em; color: rgb(62, 62, 62); font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'Microsoft YaHei', 黑体, Arial, sans-serif; font-size: 16px; white-space: normal; line-height: 1.75em; box-sizing: border-box !important; word-wrap: break-word !important; background-color: rgb(255, 255, 255);"><br style="max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></p><p style="max-width: 100%; min-height: 1em; color: rgb(62, 62, 62); font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'Microsoft YaHei', 黑体, Arial, sans-serif; font-size: 16px; white-space: normal; line-height: 1.75em; box-sizing: border-box !important; word-wrap: break-word !important; background-color: rgb(255, 255, 255);"><span style="max-width: 100%; line-height: 24px; box-sizing: border-box !important; word-wrap: break-word !important;">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></span></p><p style="max-width: 100%; min-height: 1em; color: rgb(62, 62, 62); font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'Microsoft YaHei', 黑体, Arial, sans-serif; font-size: 16px; line-height: 25.6px; white-space: normal; box-sizing: border-box !important; word-wrap: break-word !important; background-color: rgb(255, 255, 255);"><span style="max-width: 100%; line-height: 24px; box-sizing: border-box !important; word-wrap: break-word !important;"/></p><p style="max-width: 100%; min-height: 1em; color: rgb(62, 62, 62); font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'Microsoft YaHei', 黑体, Arial, sans-serif; font-size: 16px; line-height: 25.6px; white-space: normal; box-sizing: border-box !important; word-wrap: break-word !important; background-color: rgb(255, 255, 255);"><img class="" data-ratio="0.25625" data-s="300,640" referrerpolicy="no-referrer" data- referrerpolicy="no-referrer" src="http://mmbiz.qpic.cn/mmbiz_png/DpmvoL4m0DR1zqA63pYWMQI0QGz99bKEYWtZ12kBGw2egEpOsNC5BiaIEqTezoHAGg7ffJBIgCdTtI1kgNGe6hA/640?wx_fmt=png" data-type="png" data-w="640" style="box-sizing: border-box !important; word-wrap: break-word !important; visibility: visible !important; width: auto !important; box-shadow: none;" width="auto"/></p><p style="max-width: 100%; min-height: 1em; color: rgb(62, 62, 62); font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'Microsoft YaHei', 黑体, Arial, sans-serif; font-size: 16px; line-height: 25.6px; white-space: normal; box-sizing: border-box !important; word-wrap: break-word !important; background-color: rgb(255, 255, 255);"><span style="max-width: 100%; line-height: 24px; box-sizing: border-box !important; word-wrap: break-word !important;">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></span></p><p style="max-width: 100%; min-height: 1em; color: rgb(62, 62, 62); font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'Microsoft YaHei', 黑体, Arial, sans-serif; font-size: 16px; white-space: normal; line-height: 1.75em; box-sizing: border-box !important; word-wrap: break-word !important; background-color: rgb(255, 255, 255);"><span style="max-width: 100%; color: rgb(255, 104, 39); font-size: 24px; box-sizing: border-box !important; word-wrap: break-word !important;"><strong style="max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;">如果文章不错,请转发的朋友圈!</strong></span></p><p style="max-width: 100%; min-height: 1em; color: rgb(62, 62, 62); font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'Microsoft YaHei', 黑体, Arial, sans-serif; font-size: 16px; line-height: 25.6px; white-space: normal; box-sizing: border-box !important; word-wrap: break-word !important; background-color: rgb(255, 255, 255);"><span style="max-width: 100%; line-height: 24px; box-sizing: border-box !important; word-wrap: break-word !important;">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></span><br style="max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></p><p style="max-width: 100%; min-height: 1em; color: rgb(62, 62, 62); font-family: 'Helvetica Neue', 'Hiragino Sans GB', 'Microsoft YaHei', 黑体, Arial, sans-serif; font-size: 16px; white-space: normal; line-height: 1.75em; text-align: center; box-sizing: border-box !important; word-wrap: break-word !important; background-color: rgb(255, 255, 255);"><img class="" data-ratio="0.4046875" data-s="300,640" referrerpolicy="no-referrer" data- referrerpolicy="no-referrer" src="http://mmbiz.qpic.cn/mmbiz/DpmvoL4m0DTdY2omHFw7EOpL5wxpAe2JF9nxtqm1dVtjlcyjSHHPL2q9icrRJmHmoAiaJH1wbgUvrhvKc31175Pg/640?" data-type="jpeg" data-w="640" style="line-height: 24px; box-sizing: border-box !important; word-wrap: break-word !important; visibility: visible !important; width: 640px !important; box-shadow: none;" width="auto"/><span style="max-width: 100%; line-height: 24px; box-sizing: border-box !important; word-wrap: break-word !important;"> ==========</span><a href="http://mp.weixin.qq.com/s?__biz=MzAwMzMxOTUxOA==&mid=2652426510&idx=3&sn=beb3d4b7ca0eb7a1b49a37badd5e9b4f&chksm=80d082bfb7a70ba99ec662279499be1dabe8a4961d9757244623b1655edf99d7f4d989d5843c&scene=21#wechat_redirect" target="_blank" data_ue_src="http://mp.weixin.qq.com/s?__biz=MzAwMzMxOTUxOA==&mid=2652426510&idx=3&sn=beb3d4b7ca0eb7a1b49a37badd5e9b4f&chksm=80d082bfb7a70ba99ec662279499be1dabe8a4961d9757244623b1655edf99d7f4d989d5843c&scene=21#wechat_redirect" style="color: rgb(69, 154, 233); outline: 0px; max-width: 100%; line-height: 24px; box-sizing: border-box !important; word-wrap: break-word !important;">阅读原文</a><span style="max-width: 100%; line-height: 24px; box-sizing: border-box !important; word-wrap: break-word !important;">==========</span></p> </div> </div> </div> </div> <div class="topic_buttons"> <div class="fr gray f11" style="line-height: 12px; padding-top: 3px; text-shadow: 0px 1px 0px #fff;"> </div> </div> </div> <div class="sep5"></div> <div class="box"> <div class="cell"> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- jintian_wenzhi --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-1837452791782084" data-ad-slot="8042312523" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> <div class="sep5"></div> <div class="sep10"></div> <div class="box"> <div class="cell"> <span class="gray">推荐文章</span> </div> <div class="cell"> <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tbody> <tr> <td width="32" valign="top" align="center"> <img src="http://img2.jintiankansha.me/get?src=http://mmbiz.qpic.cn/mmbiz_jpg/sI1ibJd4Vzjv2Xpz5pW2FkSFwoxgnunr5dlmicBibwsibNDNr4QdCRscknKQAqqsCjbmwK6CrxX83iaA616Dt99lZoQ/0?wx_fmt=jpeg" referrerpolicy="no-referrer" class="avatar" style="max-width: 32px; max-height: 32px;" border="0" align="default"> </td> <td width="10" valign="top"></td> <td width="auto" valign="top" align="left"> <span class="item_hot_topic_title"> <span>小新说车</span>  ·  <a href="/t/eGZqQzhGN09tYg==">标致新308视频:法式特供餐,味道怎么样?</a> </span> <div class="sep5"></div> <span class="fade">7 年前</span> </td> </tr> </tbody> </table> </div> <div class="cell"> <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tbody> <tr> <td width="32" valign="top" align="center"> <img src="http://img2.jintiankansha.me/get?src=http://mmbiz.qpic.cn/mmbiz_jpg/qwldA1IRoDBYicq42GGHo0LETJZBmodKS4bWL1CTAemaRgh9Ct13ch8UbCcA5icmQRtOqibcQzD9RHsjxia4fkJcRQ/0?wx_fmt=jpeg" referrerpolicy="no-referrer" class="avatar" style="max-width: 32px; max-height: 32px;" border="0" align="default"> </td> <td width="10" valign="top"></td> <td width="auto" valign="top" align="left"> <span class="item_hot_topic_title"> <span>黄三角早报</span>  ·  <a href="/t/QWhqa3VKOGJ2TA==">辛辛苦苦一整年,一夜回到解放前!今天全国网友都在心疼一只老鼠</a> </span> <div class="sep5"></div> <span class="fade">7 年前</span> </td> </tr> </tbody> </table> </div> <div class="cell"> <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tbody> <tr> <td width="32" valign="top" align="center"> <img src="http://img2.jintiankansha.me/get?src=http://mmbiz.qpic.cn/mmbiz_jpg/hU0qgYAtO07yIwfjwNV4UgsdCjg3JrWz45WFdg0RyDXZ3MrO8crKibmSIx3z0ia3F4V9ckprnDyZo7yx9dvxojAg/0?wx_fmt=jpeg" referrerpolicy="no-referrer" class="avatar" style="max-width: 32px; max-height: 32px;" border="0" align="default"> </td> <td width="10" valign="top"></td> <td width="auto" valign="top" align="left"> <span class="item_hot_topic_title"> <span>瞭望消金</span>  ·  <a href="/t/OFpGVl!aak1yZw==">金饭碗已彻底砸碎!银行圈炸了!</a> </span> <div class="sep5"></div> <span class="fade">7 年前</span> </td> </tr> </tbody> </table> </div> <div class="cell"> <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tbody> <tr> <td width="32" valign="top" align="center"> <img src="http://img2.jintiankansha.me/get?src=http://mmbiz.qpic.cn/mmbiz_jpg/DXBaj7n4bHiao7VapFVFvBLEGKZxNZE0licoaFK0ic5e0PKo8lk20EGSNRWWqbFibNgtDNpCkR1zOZ7aQH2xe6ZZtQ/0?wx_fmt=jpeg" referrerpolicy="no-referrer" class="avatar" style="max-width: 32px; max-height: 32px;" border="0" align="default"> </td> <td width="10" valign="top"></td> <td width="auto" valign="top" align="left"> <span class="item_hot_topic_title"> <span>考研英语时事阅读</span>  ·  <a href="/t/NW9QZmxlRDYzWQ==">【K宝学堂之词组四】长难句解析&K之论</a> </span> <div class="sep5"></div> <span class="fade">7 年前</span> </td> </tr> </tbody> </table> </div> <div class="cell"> <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tbody> <tr> <td width="32" valign="top" align="center"> <img src="http://img2.jintiankansha.me/get?src=http://mmbiz.qpic.cn/mmbiz_png/MVPvEL7Qg0GAOVrYybQCWX0yFGCYzAztnicQJFiao1m1btRPHolBgBhO29Nb5f3y6KeLEnhxtH6b2egmiaqwd2mRA/0" referrerpolicy="no-referrer" class="avatar" style="max-width: 32px; max-height: 32px;" border="0" align="default"> </td> <td width="10" valign="top"></td> <td width="auto" valign="top" align="left"> <span class="item_hot_topic_title"> <span>书法在线</span>  ·  <a href="/t/TVA5SmJpUz!Gcg==">枸杞搭一物抗衰老,胜过吃唐僧肉!</a> </span> <div class="sep5"></div> <span class="fade">7 年前</span> </td> </tr> </tbody> </table> </div> </div> <div class="sep5"></div> <div class="box"> <div class="cell"> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- jintian_wenzhi --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-1837452791782084" data-ad-slot="8042312523" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> <div class="sep5"></div> </div> </div> <div class="c"></div> <div class="sep20"></div> </div> <div id="Bottom"> <div class="content footer"> <div class="inner"> <div class="sep10"></div> <div class="fr"> </div> <strong> <a href="http://www.sov5.org" class="dark" target="_blank">Sov5搜索</a>   <span class="snow">·</span>   <a href="http://baike.sov5.org" class="dark" target="_blank">小百科</a>   <span class="snow">·</span>   <a class="go-mobile" href="javascript:;">移动版</a> </strong> <div class="sep20"></div> 51好读 - 好文章就要读起来! </div> </div> </div> <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/highlight.js/9.2.0/highlight.min.js"></script> <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script> <script type="text/javascript" src="/static/js/vendors/jquery/jquery.autosize.js?v=ac4d62e3842f55aa2b78d2c2ef1af833"></script> <script type="text/javascript" src="/static/js/vendors/lscache/lscache.min.js?v=bf403ab76d287d394375662defac76c3"></script> <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/select2/3.0.0/select2.min.js"></script> <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery.selectboxit/3.8.0/jquery.selectBoxIt.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/jquery.textcomplete/0.3.3/jquery.textcomplete.min.js" type="text/javascript"></script> <script type="text/javascript" src="/static/js/site/base/common.js?v=97646d06e4a04b2bf43b7b467cfd321e"></script> <script type="text/javascript" src="/static/js/site/base/v2ex.js?v=d41d8cd98f00b204e9800998ecf8427e"></script> <script type="text/javascript" src="/static/js/site/base/base.js?v=edcfd5298fe2acdc62d7fb498c373f99"></script> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-0SBZ564CXS"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'G-0SBZ564CXS'); </script> <script> var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?55a854de13a9633b2937a3c24817fc7b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script> (function () { var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> <!-- 多条广告如下脚本只需引入一次 --> <script type="text/javascript" src="//cpro.baidustatic.com/cpro/ui/cm.js" async="async" defer="defer"> </script> <script type="text/javascript" src="/static/js/site/post/post.js?v=e7935b685b5f2aef4de680492fd620cf"></script> <script type="text/javascript"> jQuery.browser = {}; (function () { jQuery.browser.msie = false; jQuery.browser.version = 0; if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) { jQuery.browser.msie = true; jQuery.browser.version = RegExp.$1; } })(); </script> <script type="text/javascript" src="/static/js/site/post/post_common.js?v=15968870dc6780d5664012d59b217894"></script> <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery-hashchange/1.3/jquery.ba-hashchange.min.js"></script> <script type="text/javascript" src="/static/js/site/post/post_folder.js?v=d3abab84fa5b19533d2131bf98e690f7"></script> </body> </html>