main.js 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. $(window).on("load",function(){
  2. //获取页面url后面的参数
  3. var number = function(variable) {
  4. var query = window.location.search.substring(1);
  5. var vars = query.split("&");
  6. for (var i=0;i<vars.length;i++) {
  7. var pair = vars[i].split("=");
  8. if(pair[0] == variable){return pair[1];}
  9. }
  10. return(false);
  11. };
  12. var HotContent = function(url){
  13. this.screenHeight = $(document.body).height() * 0.6;
  14. this.url = url;
  15. this.data = null;
  16. this.wrap = {
  17. images: "wrap-img",
  18. video: "wrap-video",
  19. model: "wrap-model",
  20. iframe: "wrap-iframe"
  21. }
  22. this.ajax();
  23. };
  24. HotContent.prototype.ajax = function(){
  25. var that = this;
  26. $.ajax({
  27. url:that.url,
  28. dataType: "json",
  29. success: function (data) {
  30. that.data = data;
  31. that.init();
  32. //移动端自动播放
  33. setTimeout(function() {
  34. parent.loaddingSuccess && parent.loaddingSuccess();
  35. }, 16)
  36. },
  37. error: function (msg) {
  38. console.log("错误:"+msg);
  39. }
  40. })
  41. };
  42. HotContent.prototype.init = function(){
  43. var num = number("m");
  44. this.data[num].images ? this.createElements(this.data[num].images,this.wrap.images) : '';
  45. this.data[num].video ? this.createElements(this.data[num].video,this.wrap.video) : '';
  46. this.data[num].model ? this.createElements(this.data[num].model,this.wrap.model) : '';
  47. this.data[num].iframe ? this.createElements(this.data[num].iframe,this.wrap.iframe) : '';
  48. this.footer();
  49. this.onlyType();
  50. //加载视频
  51. $.getScript("js/vedio.js");
  52. //默认初始化显示的类型
  53. this.InitialDefaultDisplay($(".footer-btn > button:first").attr("data-name"));
  54. var that = this;
  55. $(".footer-btn > button").on("click",function(){
  56. that.InitialDefaultDisplay($(this).attr("data-name"));
  57. });
  58. $(".o-slider-header img").on("pointerdown",function(e){
  59. e.preventDefault();
  60. })
  61. };
  62. HotContent.prototype.InitialDefaultDisplay = function(id){
  63. $("."+id).show().siblings().hide();
  64. $('[data-name='+id+']').addClass("active").siblings().removeClass("active");
  65. if($("."+id).find("video").length < 1){
  66. if($("."+id).siblings().find("video").length > 0)$("."+id).siblings().find("video")[0].pause();
  67. }
  68. };
  69. HotContent.prototype.createElements = function(data,classname){
  70. var contioner = $(".contioner");
  71. function createChildrenElements(){
  72. var children = [];
  73. switch (classname) {
  74. case this.wrap.images:
  75. data.forEach(function(currentValue){ children.push('<img src='+currentValue+' alt=图片 />') ; })
  76. break;
  77. case this.wrap.video:
  78. data.forEach(function(currentValue){ children.push(videoEle(currentValue.url,currentValue.img)); })
  79. break;
  80. case this.wrap.model:
  81. data.forEach(function(currentValue){ children.push('<iframe src='+currentValue+' ></iframe>'); })
  82. break;
  83. case this.wrap.iframe:
  84. data.forEach(function(currentValue){ children.push('<iframe src='+currentValue+' ></iframe>'); })
  85. break;
  86. }
  87. return children;
  88. }
  89. function videoEle(src,img){
  90. if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){
  91. return '<div class="video-index" >\
  92. <div class="js-video">\
  93. <video class="js-media" poster='+img+' webkit-playsinline="true" x-webkit-airplay="true" playsinline="true" >\
  94. <source src='+src+' type="video/mp4" />\
  95. <p>你的浏览器不支持 HTML5 Video。</p>\
  96. </video>\
  97. <i data-playPause class="playPause fa ui-icon">\
  98. <span></span>\
  99. <div class="ui-icon-before">\
  100. <div class="ui-icon-after"></div>\
  101. </div>\
  102. </i>\
  103. <div class="ui">\
  104. <div>\
  105. <span class="timeDisplay"><i data-currentTime>0:00</i> / <i data-duration>0:00</i></span>\
  106. </div>\
  107. <div>\
  108. <div data-progress class="progress">\
  109. <div data-buffer class="progress-buffer"></div>\
  110. <div data-time class="progress-time"></div>\
  111. </div><!-- progress -->\
  112. </div>\
  113. <div>\
  114. <div data-mute class="fa fa-volume-up ui-icon">\
  115. </div>\
  116. </div>\
  117. <div>\
  118. <div data-volume="100" class="volumeControl"><span class="ui-slider-handle"></span></div>\
  119. </div>\
  120. </div>\
  121. <i data-fullscreen class="fullscreen iconicfill-fullscreen" title="fullscreen"></i>\
  122. </div>\
  123. </div>';
  124. }else{
  125. return '<video src='+src+' controls="controls" autoplay poster='+img+'></video>'
  126. }
  127. }
  128. function singleElement(){
  129. var SE = createChildrenElements.call(this);
  130. contioner.append('<div class='+classname+'>'+SE+'</div>').css("height",this.screenHeight);
  131. this.Zoom(classname);
  132. };
  133. function doubleElement(){
  134. var DE = createChildrenElements.call(this);
  135. var _doubleElement = this.generateElements().mainElements(classname,this.generateElements(data,DE).multiElement());
  136. contioner.append(_doubleElement).css("height",this.screenHeight);
  137. this.build(classname);
  138. this.Zoom(classname);
  139. };
  140. if(data.length > 1)
  141. {
  142. doubleElement.call(this,classname);
  143. }
  144. else
  145. {
  146. singleElement.call(this,classname);
  147. }
  148. };
  149. HotContent.prototype.generateElements = function(data,ele){
  150. function combination(SingleOriginal){
  151. if(!data) return;
  152. return '<div class="o-slider--item" >\
  153. <div class="o-slider-bg">\
  154. <div class="o-slider-header" >'
  155. +SingleOriginal+
  156. '</div>\
  157. </div>\
  158. </div>';
  159. }
  160. return {
  161. mainElements : function(classname,children){
  162. return '<div class='+classname+'>\
  163. <div class="o-sliderContainer" id=pbSliderWrap-'+classname+'>\
  164. <div class="o-slider" id=pbSlider-'+classname+'>'
  165. +children+
  166. '</div>\
  167. </div>\
  168. </div>';
  169. },
  170. multiElement : function(){
  171. var _multiElement = "";
  172. for (var i = 0; i < data.length; i++) {
  173. _multiElement += combination(ele[i]);
  174. }
  175. return _multiElement;
  176. }
  177. };
  178. };
  179. //启动轮播
  180. HotContent.prototype.build = function(id) {
  181. var screenHeight = this.screenHeight;
  182. $('#pbSlider-'+id).pbTouchSlider({
  183. slider_Wrap: '#pbSliderWrap-'+id,
  184. slider_Threshold: 10,
  185. slider_Speed:600,
  186. slider_Ease:'ease-out',
  187. slider_Drag : true,
  188. slider_Arrows: {
  189. enabled : true
  190. },
  191. slider_Dots: {
  192. class :'.o-slider-pagination',
  193. enabled : true,
  194. preview : false
  195. },
  196. slider_Breakpoints: {
  197. default: {
  198. height: screenHeight
  199. },
  200. tablet: {
  201. height: screenHeight,
  202. media: 1024
  203. },
  204. smartphone: {
  205. height: screenHeight,
  206. media: 768
  207. }
  208. }
  209. });
  210. };
  211. // 启动图片的放大缩小
  212. HotContent.prototype.Zoom = function(classname) {
  213. if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){
  214. if(classname != "wrap-img") return;
  215. console.log($(".o-slider-header").height());
  216. $("."+classname).find(".o-slider-header").each(function(){
  217. new RTP.PinchZoom(this, {});
  218. })
  219. }
  220. };
  221. HotContent.prototype.footer = function() {
  222. $(".footer").append(this.footerCreateEle());
  223. };
  224. HotContent.prototype.footerCreateEle = function() {
  225. var num = number("m");
  226. var footerH3 = this.data[num].text || "";
  227. var footerText = this.data[num].content || "";
  228. var footerBtn = "";
  229. var btnIcon = {
  230. "img":["img-icon","图片"],
  231. "video":["video-icon","视频"],
  232. "model":["model-icon","3D"],
  233. "iframe":["iframe-icon","网页"]
  234. };
  235. function btnBuild(id,classname,text){
  236. return '<button data-name='+id+'><i class='+classname+'></i>'+text+'</button>'
  237. }
  238. this.data[num].model ? footerBtn += btnBuild(this.wrap.model,btnIcon.model[0],btnIcon.model[1]) : '';
  239. this.data[num].video ? footerBtn += btnBuild(this.wrap.video,btnIcon.video[0],btnIcon.video[1]) : '';
  240. this.data[num].iframe ? footerBtn += btnBuild(this.wrap.iframe,btnIcon.iframe[0],btnIcon.iframe[1]): '';
  241. this.data[num].images ? footerBtn += btnBuild(this.wrap.images,btnIcon.img[0],btnIcon.img[1]) : '';
  242. return '<div class="footer-title"><h3>'+footerH3+'</h3><div class=footer-btn>'+footerBtn+'</div></div>\
  243. <div class=footer-text>'+footerText+'<div class=footer-mask></div></div>';
  244. }
  245. HotContent.prototype.onlyType = function() {
  246. var footerBtn = $(".footer-btn");
  247. if(footerBtn.children().length > 1 ) return;
  248. if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){
  249. if(!this.data[number("m")].text ){
  250. $(".contioner").css("height",$(document.body).height() * 0.96);
  251. }
  252. $(".footer-btn").hide();
  253. }
  254. }
  255. //new HotContent("https://super.4dage.com/data/"+number("id")+"/hot/js/data2.js");
  256. new HotContent("/data/" + number("id") +"/hot/js/data.js");
  257. })