webview_pullcustom_parent.html 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  6. <meta name="HandheldFriendly" content="true"/>
  7. <meta name="MobileOptimized" content="320"/>
  8. <title>Hello H5+</title>
  9. <script type="text/javascript" src="../js/common.js"></script>
  10. <script type="text/javascript" charset="utf-8">
  11. var ws=null,list=null;
  12. // 扩展API加载完毕,现在可以正常调用扩展API
  13. function plusReady(){
  14. ws=plus.webview.currentWebview();
  15. wo=ws.opener();
  16. var topoffset='45px';
  17. if(plus.navigator.isImmersedStatusbar()){// 兼容immersed状态栏模式
  18. topoffset=(Math.round(plus.navigator.getStatusbarHeight())+45)+'px';
  19. }
  20. list=plus.webview.create('webview_pullcustom_content.html', 'webview_pullcustom_content', {
  21. top: topoffset,
  22. bottom: '0px',
  23. bounce: 'vertical'
  24. });
  25. ws.append(list);
  26. ws.addEventListener('show', function(){
  27. refresh();
  28. }, false);
  29. if(!ws.preate){
  30. list.addEventListener('loaded', function(){//页面加载完成后才显示
  31. ws.show('pop-in');
  32. },false);
  33. }
  34. ws.append(list);
  35. // 实现列表可下拉刷新
  36. list.addEventListener('dragBounce', onPullStateChange, false);
  37. list.setBounce({position:{top:'100px'}, changeoffset:{top:'50px'}});
  38. }
  39. if(window.plus){
  40. plusReady();
  41. }else{
  42. document.addEventListener('plusready', plusReady, false);
  43. }
  44. // DOMContentLoaded事件处理
  45. var etext=null,eicon=null;
  46. document.addEventListener('DOMContentLoaded', function(){
  47. etext=document.getElementById('text');
  48. eicon=document.getElementById('icon');
  49. }, false);
  50. // 下拉状态改变
  51. function onPullStateChange(e){
  52. switch(e.status){
  53. case 'beforeChangeOffset'://下拉可刷新状态
  54. pull1();
  55. break;
  56. case 'afterChangeOffset'://松开可刷新状态
  57. pull2();
  58. break;
  59. case 'dragEndAfterChangeOffset'://正在刷新状态
  60. list.evalJS('onRefresh()');
  61. pull3();
  62. break;
  63. default:
  64. break;
  65. }
  66. }
  67. function pull1(){
  68. etext.textContent='下拉可刷新';
  69. eicon.style.webkitTransition='all 0.3s ease-in';
  70. eicon.style.webkitTransform='rotate(0deg)';
  71. }
  72. function pull2(){
  73. etext.textContent='松开可刷新';
  74. eicon.style.webkitTransition='all 0.3s ease-in';
  75. eicon.style.webkitTransform='rotate(180deg)';
  76. }
  77. function pull3(){
  78. etext.textContent='正在刷新...';
  79. eicon.src='../img/pull_fresh.png';
  80. eicon.style.webkitAnimation='spin 1s infinite linear';
  81. }
  82. function pullReset(){
  83. etext.textContent='下拉可刷新';
  84. eicon.src='../img/pull_arrow.png';
  85. eicon.style.webkitTransition='';
  86. eicon.style.webkitTransform='';
  87. eicon.style.webkitAnimation='';
  88. }
  89. function refresh(){
  90. pull3();
  91. list.setBounce({offset:{top:'50px'}});
  92. }
  93. </script>
  94. <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8"/>
  95. <style type="text/css">
  96. #pull{
  97. width:24px;
  98. height:100%;
  99. display:inline-block;
  100. margin:0 1em;
  101. }
  102. #icon{
  103. height:24px;
  104. vertical-align:middle;
  105. }
  106. @-webkit-keyframes spin{
  107. 0% {
  108. -webkit-transform:rotate(0deg);
  109. }
  110. 100% {
  111. -webkit-transform:rotate(360deg);
  112. }
  113. }
  114. .irefresh {
  115. background:no-repeat center center url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABYCAYAAAADWlKCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAWdEVYdENyZWF0aW9uIFRpbWUAMTEvMTAvMTUgEQA0AAAEP0lEQVR4nO3aTWhcVRTA8f+NQ6ImLqsu7MLuSiOt74SOoJBYDCp0UdG1BUVdWFBR/CiCLqzaClWhLlQUiqCIHwh1EUFqRyshMudRcVRcWdBFsZCVNQzEXhcz1ZeXaTOdN9N3Jp7f7t3J3JzmD52XvBtijDg7RsoewK3kQYzxIMZ4EGM8iDEexBgPYowHMcaDGONBjPEgxngQYzyIMR7EGA9ijAcxxoMY40GM8SDGeBBjPIgxHsQYD2KMBzHGgxjjQYzxIMZUyh6gF/V6fWsIYQa4A9gCbGy/9BvwIzAXYzw2NTX1fTf7qerDIvLGQIa9SGFYDls3Go2RZrO5C9gNbAeuXeMtp4DvgMNjY2OfTU5Onu30Rar6OPC8iFzV14F7NBRBVHUHcACQXrcAnhSRo7l9HwVeBRCRUGjIPjEdpFarhYmJiX3AM33a8qXFxcW9s7OzK2KAB1mTqo4C7wN3d3h5CfgSOA6cAP5or18NbANuAW4Drujw3neBBnAwu+hBLkBVLwM+ZHWMJeC1EMLbSZL8eqE90jS9Psb4APAYcPla39NKEKt3WS+wOoaGEB5MkiTtZoN2sL2q+inwFnBjn2ccCHO/h6jqNPB0bvkYMNNtjCwRqQM30bolNs9UkIWFhQrwem45BXaKyJ8Ftn4OuKbA+y8ZU/9lVSqVncDWzNJfwG4ROdPrnqr6CvBE0dkuFVNBgPtz14dEpNHrZqp6kNaH+tAwE6Rer28OIVQzS2dCCId62UtVR4B9tGL8Ddi7lTwPM0FCCLcDGzJLR5Mk6fWD+CzwJq3Po6GJAYaCxBjvDGHFrwK1XvcSEYCTBUcqhZm7rBDC5tz1D2XNUiYzQfjvT+gAxBhPlTVImSwFcdgK8nv2IoSw1vOOdclMkBjjT7nrG8qapUxmgoQQ5nJL06UMUjIzQYA54HTmekeaphvP98XrlZkgIvIzsJBZGo8x7ilrnrKYCdL2Tu56j6pOljJJSUwFWV5e/hzIHt25EjisquNF907TdGx+ft7Uv7cTUwNWq9Vl4JHccgIcKRJFVcdjjLXR0dFPGo3GaKEhB8xUEAARqQEv55ZvBWqqmlzsfqoqtA5DVIFdzWbzC1XdVHzSwTAXpO1Z4OPcmgDHVXV/Nz9QVd2kqvuBb2idRDlnBnioX4P2m8lTJwCqWgE+AO7p8PIS8BXwdQghjTGeBgghbIgxbgdupvWD73QM6CPgvoKPhAfGbBAAVQ3Ai6w+9NCrAyLyVJ/2GgjTQc4Z1FFSi4YiCPz7WPYu4F66P2z9LfAecEREOh62tmZogmSp6jZguv2UcQtwHa1HtSeBX2j9GaYmIifKm7I3QxlkPbN62/u/5UGM8SDGeBBjPIgxHsQYD2KMBzHGgxjjQYzxIMZ4EGM8iDEexBgPYowHMcaDGONBjPEgxngQYzyIMR7EGA9ijAcxxoMY40GM8SDG/AOZAi+0sACgewAAAABJRU5ErkJggg==);
  116. background-size:50px 44px;
  117. }
  118. </style>
  119. </head>
  120. <body style="background:#EAEAEA;">
  121. <div style="text-align:center;height:44px;line-height:44px;">
  122. <div id="pull"><img id="icon" src="../img/pull_arrow.png"/></div><font id="text">下拉可刷新</font>
  123. </div>
  124. </body>
  125. </html>