components.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532
  1. // 通用数据
  2. let globaldata = {
  3. // 滚动高度
  4. scrollheight: 50,
  5. // body
  6. body: document.documentElement || document.body,
  7. // 省份
  8. province: [{ "code": "", "codeName": "全国" }, { "code": 1, "codeName": "北京" }, { "code": 21, "codeName": "天津" }, { "code": 42, "codeName": "上海" }, { "code": 63, "codeName": "重庆" }, { "code": 105, "codeName": "河北" }, { "code": 290, "codeName": "山西" }, { "code": 424, "codeName": "台湾" }, { "code": 432, "codeName": "辽宁" }, { "code": 549, "codeName": "吉林" }, { "code": 619, "codeName": "黑龙江" }, { "code": 765, "codeName": "江苏" }, { "code": 885, "codeName": "浙江" }, { "code": 988, "codeName": "安徽" }, { "code": 1110, "codeName": "福建" }, { "code": 1205, "codeName": "江西" }, { "code": 1317, "codeName": "山东" }, { "code": 1475, "codeName": "河南" }, { "code": 1654, "codeName": "湖北" }, { "code": 1775, "codeName": "湖南" }, { "code": 1913, "codeName": "广东" }, { "code": 2063, "codeName": "甘肃" }, { "code": 2166, "codeName": "四川" }, { "code": 2370, "codeName": "贵州" }, { "code": 2469, "codeName": "海南" }, { "code": 2508, "codeName": "云南" }, { "code": 2656, "codeName": "青海" }, { "code": 2708, "codeName": "陕西" }, { "code": 2827, "codeName": "广西" }, { "code": 2953, "codeName": "西藏" }, { "code": 3034, "codeName": "宁夏" }, { "code": 3061, "codeName": "新疆" }, { "code": 3181, "codeName": "内蒙古" }, { "code": 3296, "codeName": "澳门" }, { "code": 3298, "codeName": "香港" }, { "code": '', "codeName": "默认" }],
  9. }
  10. // 全局添加路径解析
  11. $(function () {
  12. var r = {
  13. protocol: /([^\/]+:)\/\/(.*)/i,
  14. host: /(^[^\:\/]+)((?:\/|:|$)?.*)/,
  15. port: /\:?([^\/]*)(\/?.*)/,
  16. pathname: /([^\?#]+)(\??[^#]*)(#?.*)/
  17. };
  18. function parseUrl (url) {
  19. var tmp, res = {};
  20. res["href"] = url;
  21. for (p in r) {
  22. tmp = r[p].exec(url);
  23. res[p] = tmp[1];
  24. url = tmp[2];
  25. if (url === "") {
  26. url = "/";
  27. }
  28. if (p === "pathname") {
  29. res["pathname"] = tmp[1];
  30. res["search"] = tmp[2];
  31. res["hash"] = tmp[3];
  32. }
  33. }
  34. let param = res.search.replace('?', '').split("&");
  35. let params = {};
  36. param.forEach(item => {
  37. let arr = item.split("=");
  38. params[arr[0]] = arr[1]
  39. })
  40. res["query"] = params;
  41. return res;
  42. };
  43. window["lxd"] = {
  44. parseUrl
  45. }
  46. })
  47. // app 悬浮放大
  48. $(function () {
  49. $("[data-app='download']").mouseenter(function () {
  50. $(this).find("div").addClass("show")
  51. }).mouseleave(function () {
  52. $(this).find("div").removeClass("show")
  53. })
  54. })
  55. // 大屏 下拉菜单
  56. $(function () {
  57. let navitems = $("#nav>.nav-item");
  58. const move = (that, show) => {
  59. let lis = $(that).find("li"),
  60. i = $(that).find("i");
  61. ul = $(that).find("ul");
  62. if (lis.length != 0 && show) {
  63. ul.addClass("show");
  64. i.removeClass("glyphicon-chevron-down").addClass("glyphicon-chevron-up");
  65. return false;
  66. }
  67. if (lis.length != 0 && !show) {
  68. ul.removeClass("show")
  69. i.removeClass("glyphicon-chevron-up").addClass("glyphicon-chevron-down");
  70. return false;
  71. }
  72. return false;
  73. }
  74. for (let i = 0; i < navitems.length; i++) {
  75. $(navitems[i]).mouseenter(function () {
  76. let that = this;
  77. move(that, true)
  78. }).mouseleave(function () {
  79. let that = this;
  80. move(that, false)
  81. })
  82. }
  83. }
  84. )
  85. // 监听滚动轴
  86. $(function () {
  87. // face显示锁
  88. let lock = true;
  89. // top显示锁
  90. let locktop = false;
  91. // 滚动高度
  92. let height = globaldata.scrollheight;
  93. $("body")[0].onscroll = function () {
  94. let stop = globaldata.body.scrollTop;
  95. // console.log(stop)
  96. // 可是区域宽度;
  97. if (stop > height && !locktop) {
  98. $("#top").removeClass("noshow");
  99. locktop = true;
  100. }
  101. if (stop < height && locktop) {
  102. $("#top").addClass("noshow");
  103. locktop = false;
  104. }
  105. if ($("body")[0].clientWidth < 768) {
  106. return false;
  107. }
  108. if (stop > height && lock) {
  109. $("#face").addClass("noshow");
  110. lock = false
  111. return false;
  112. }
  113. if (stop <= height && !lock) {
  114. $("#face").removeClass("noshow");
  115. lock = true;
  116. return false;
  117. }
  118. }
  119. })
  120. // 小屏幕 下拉菜单
  121. $(function () {
  122. // 按钮开关
  123. let lock = false;
  124. const open = () => {
  125. if (!lock) {
  126. $("#nav-sm").addClass("nav-sm-show").removeClass("nav-sm-noshow");
  127. globaldata.body.addEventListener('touchmove', e =>
  128. e.preventDefault()
  129. , { passive: false })
  130. lock = true
  131. return false;
  132. }
  133. if (lock) {
  134. $("#nav-sm").addClass("nav-sm-noshow").removeClass("nav-sm-show");
  135. globaldata.body.removeEventListener('touchmove', e => e.preventDefault() = true, { passive: false })
  136. lock = false;
  137. return false;
  138. }
  139. }
  140. $('#listbutton').click(function () {
  141. open()
  142. })
  143. // 可视区域变化
  144. window.onresize = () => {
  145. let appwidth = $("body")[0].clientWidth;
  146. if (appwidth > 768) {
  147. $("#nav-sm").removeClass("nav-sm-show");
  148. lock = false;
  149. return false;
  150. } else {
  151. // face 移动端显示
  152. try {
  153. $("#face").removeClass("noshow");
  154. } catch (err) { }
  155. }
  156. // if (lock) {
  157. // $("#nav-sm").addClass("nav-sm-show");
  158. // return false;
  159. // }
  160. }
  161. })
  162. // 分享设置
  163. var shareModel = {
  164. // /**
  165. // * 分享QQ好友
  166. // * @param {[type]} title [分享标题]
  167. // * @param {[type]} url [分享url链接,默认当前页面链接]
  168. // * @param {[type]} pic [分享图片]
  169. // * @return {[type]} [description]
  170. // */
  171. shareQQ: function (url, title, pic) {
  172. var param = {
  173. url: url || window.location.href,
  174. desc: '', /*分享理由*/
  175. title: title || '', /*分享标题(可选)*/
  176. summary: '',/*分享描述(可选)*/
  177. pics: pic || '',/*分享图片(可选)*/
  178. flash: '', /*视频地址(可选)*/
  179. site: '' /*分享来源 (可选) */
  180. };
  181. var s = [];
  182. for (var i in param) {
  183. s.push(i + '=' + encodeURIComponent(param[i] || ''));
  184. }
  185. var targetUrl = "https://connect.qq.com/widget/shareqq/iframe_index.html?" + s.join('&');
  186. window.open(targetUrl, 'qq');
  187. },
  188. // /**
  189. // * 微信分享
  190. // * @return {[type]} [description]
  191. // */
  192. weixin: function () {
  193. var url = window.location.href,
  194. encodePath = encodeURIComponent(url),
  195. targetUrl = 'https://api.gaokaozhitongche.com/v1/direct?text=' + encodePath;
  196. window.open(targetUrl, 'weixin');
  197. },
  198. // /**
  199. // * 分享新浪微博
  200. // * @param {[type]} title [分享标题]
  201. // * @param {[type]} url [分享url链接,默认当前页面]
  202. // * @param {[type]} pic [分享图片]
  203. // * @return {[type]} [description]
  204. // */
  205. sinaWeiBo: function (title, url, pic) {
  206. var param = {
  207. url: url || window.location.href,
  208. type: '3',
  209. count: '1', /** 是否显示分享数,1显示(可选)*/
  210. appkey: '', /** 您申请的应用appkey,显示分享来源(可选)*/
  211. title: '', /** 分享的文字内容(可选,默认为所在页面的title)*/
  212. pic: pic || '', /**分享图片的路径(可选)*/
  213. ralateUid: '', /**关联用户的UID,分享微博会@该用户(可选)*/
  214. rnd: new Date().valueOf()
  215. }
  216. var temp = [];
  217. for (var p in param) {
  218. temp.push(p + '=' + encodeURIComponent(param[p] || ''))
  219. }
  220. var targetUrl = 'https://service.weibo.com/share/share.php?' + temp.join('&');
  221. window.open(targetUrl, 'sinaweibo');
  222. }
  223. };
  224. $(function () {
  225. $("#share").mouseenter(function () {
  226. $(this).children("ul").css("width", 'auto')
  227. }).mouseleave(function () {
  228. $(this).children("ul").css("width", '0px');
  229. })
  230. let lis = $("#share>ul>li");
  231. for (let i = 0; i < lis.length; i++) {
  232. if (i == 1) {
  233. $(lis[i]).click(function () {
  234. shareModel.shareQQ();
  235. })
  236. }
  237. if (i == 2) {
  238. var dom = $("<div>");
  239. dom.attr("id", "qrcode");
  240. $(dom).appendTo($("#share"));
  241. var qrcode = new QRCode("qrcode", {
  242. text: window.location.href,
  243. width: 100,
  244. height: 100,
  245. colorDark: "#000000",
  246. colorLight: "#ffffff",
  247. correctLevel: QRCode.CorrectLevel.H
  248. });
  249. qrcode.clear();
  250. qrcode.makeCode(window.location.href)
  251. $("#qrcode").append(
  252. `<div class="wei"><div>微信扫一扫</div><div>便可将本文分享至朋友圈</div><div>`
  253. )
  254. $(lis[i]).mouseenter(function () {
  255. $("#qrcode").show();
  256. }).mouseleave(function () {
  257. $("#qrcode").hide();
  258. })
  259. }
  260. if (i == 3) {
  261. $(lis[i]).click(function () {
  262. shareModel.sinaWeiBo();
  263. })
  264. }
  265. }
  266. })
  267. // 按钮锁
  268. $(function () {
  269. $("#top").click(function () {
  270. let dom = globaldata.body;
  271. // let top = document.documentElement.scrollTop || document.body.scrollTop;
  272. $(dom).animate({ scrollTop: 0 }, 500);
  273. })
  274. })
  275. // toast 背景事件
  276. $(function () {
  277. let dom = $("#toast>.toast-content");
  278. let style = dom.data();
  279. try {
  280. let h = style["height"] * 1 / 2;
  281. let w = style["width"] * 1 / 2;
  282. style["width"] += "px";
  283. style["height"] += "px";
  284. style["top"] = `calc(50vh - ${h}px )`;
  285. style["left"] = `calc(50vw - ${w}px )`;
  286. dom.css(style);
  287. } catch (err) { }
  288. dom.find("a").click(function () {
  289. window.location.href = $(this).attr("href")
  290. })
  291. $("#toast").click(function (e) {
  292. if (e.target.id != 'toast') return false
  293. $(this).removeClass("show");
  294. Array.prototype.slice.call($(this).find(".show")).forEach(e => {
  295. $(e).removeClass("show")
  296. })
  297. })
  298. })
  299. // 下载app
  300. $(function () {
  301. $("#download button").click(
  302. function () {
  303. window.location.href = "http://down.gaokaoapp.net";
  304. }
  305. )
  306. })
  307. // 评论区 点赞
  308. $(function () {
  309. // const globaldata = {
  310. // // 用户是否登录
  311. // user: false,
  312. // // 登录弹框
  313. // sgin () {
  314. // $("#toast").addClass("show").find(".msg").addClass("show").unbind("click").click(function () {
  315. // window.location.href = "http://down.gaokaoapp.net"
  316. // });
  317. // }
  318. // }
  319. // 显示区高度
  320. // let ch = document.documentElement.clientHeight || document.body.clientHeight;
  321. // 实现评论区加载
  322. // let lock = false, dom = $("#detail") || false;
  323. // $(window).scroll(function () {
  324. // if (lock && !!dom) return false;
  325. // // 滑动区高度
  326. // let sh = document.documentElement.scrollHeight || document.body.scrollHeight;
  327. // // 滑动位置
  328. // let st = document.documentElement.scrollTop || document.body.scrollTop;
  329. // let c = sh * 1 - ch * 1 - st * 1;
  330. // if (c == 0) {
  331. // lock = true;
  332. // data();
  333. // }
  334. // })
  335. // 阅读量问题
  336. // 评论区
  337. // function data () {
  338. // // 请求 根据请求改变内容 唯一标识 data-userid="1" data-good="false"
  339. // let com = `<div class="user" data-good="false" data-userid="1" >
  340. // <div class="u-img"><img src="../imgs/qq.png" alt="" class="img"></div>
  341. // <div class="u-content">
  342. // <div class="u-flex">
  343. // <div class="u-name">QQ官方</div>
  344. // <div class="u-fabulous" data-gods="1"><span>0</span><i data-gods="1" style="margin-left:5px" class="glyphicon glyphicon-thumbs-up"></i></div>
  345. // </div>
  346. // <div class="u-detail">
  347. // 对此,广东警官学院表示,其普通高等教育(全日制)招生工作严格执行教育部的“阳光高考”规定和工作程序,不以任何形式承诺录取,不因任何理由降低标准录取。学校从未委托任何个人、中介组织或招生机构开展提前招生、高职扩招等宣
  348. // </div>
  349. // <div class="u-flex">
  350. // <div class="u-date">2020-12-15</div>
  351. // <div data-gods="2" class="u-report">举报</div>
  352. // </div>
  353. // </div>
  354. // </div>`;
  355. // return new Promise(resolve => {
  356. // $("#detail").append(com);
  357. // //评论点赞 登录状态 请求
  358. // let lists = $("#detail>.user");
  359. // // 模拟无信息加载情况
  360. // if (lists.length == 10) {
  361. // resolve(true)
  362. // }
  363. // for (let i = 0; i < lists.length; i++) {
  364. // $(lists[i]).unbind("click");
  365. // $(lists[i]).click(function (e) {
  366. // if (!globaldata.user) {
  367. // globaldata.sgin();
  368. // return false
  369. // }
  370. // let userid = $(this).data("userid");
  371. // let lock = $(this).data("good");
  372. // let gods = e.target.dataset.gods;
  373. // if (gods == 1) {
  374. // let $i = $(this).find("i");
  375. // let $span = $(this).find("span");
  376. // let num = $span.text();
  377. // if (!lock) {
  378. // $i.addClass("color");
  379. // $(this).data("good", true);
  380. // $span.text(num * 1 + 1);
  381. // } else {
  382. // $i.removeClass("color");
  383. // $(this).data("good", false);
  384. // $span.text(num * 1 - 1);
  385. // }
  386. // return false;
  387. // }
  388. // if (gods == 2) {
  389. // $("#toast").addClass("show").find("#report").addClass("show").data("userid", userid);
  390. // }
  391. // })
  392. // }
  393. // resolve(false);
  394. // })
  395. // }
  396. // 阅读点赞 登录状态 请求
  397. // $("#read>.good").click(function () {
  398. // if (!globaldata.user) {
  399. // globaldata.sgin();
  400. // return false
  401. // }
  402. // let $i = $(this).find("i");
  403. // let $span = $(this).find("span");
  404. // let num = $span.text();
  405. // let lock = $i.data("good");
  406. // if (!lock) {
  407. // $i.addClass("color");
  408. // $i.data("good", true);
  409. // $span.text(num * 1 + 1);
  410. // } else {
  411. // $i.removeClass("color");
  412. // $i.data("good", false);
  413. // $span.text(num * 1 - 1);
  414. // }
  415. // })
  416. })
  417. // 省份
  418. $(function () {
  419. // 根据路径判断城市
  420. let area = lxd.parseUrl(window.location.href).query.area || '', i = 0, bool = true;
  421. do {
  422. if (area == globaldata["province"][i]["code"]) {
  423. bool = !bool;
  424. } else {
  425. i++;
  426. i < globaldata["province"].length ? '' : bool = !bool;
  427. }
  428. } while (bool)
  429. i == 36 ? i = 0 : '';
  430. $(".my-province>span").html(globaldata.province[i]["codeName"]);
  431. function province (data) {
  432. let str = ``;
  433. data.forEach(item => str += `<li data-area=${item.code}>${item.codeName}</li>`);
  434. str = `<ul >${str}</ul>`;
  435. return str
  436. }
  437. // 底部弹出框
  438. let lis = $("[data-province='true']").append(province(globaldata.province)).find("li");
  439. Array.prototype.slice.call(lis).forEach(item => {
  440. $(item).click(function (e) {
  441. e.stopPropagation();
  442. let text = $(this).text();
  443. if (text == "默认") {
  444. $(".my-province div[data-province='true']").hide();
  445. return false;
  446. }
  447. let paresurl = lxd.parseUrl(window.location.href), path = paresurl.pathname;
  448. window.location.href = `${path}?area=${$(e.target).data("area")}`;
  449. })
  450. })
  451. function province_show (e) {
  452. e.stopPropagation();
  453. $(".my-province div[data-province='true']").show().unbind("mouseleave").mouseleave(function () { $(this).hide() });
  454. }
  455. $(".my-province>span").click(province_show);
  456. $(".my-province>i").click(province_show);
  457. })
  458. // 页面内通过 .click-dom .click-href 进行业内跳转
  459. $(function () {
  460. $(".click-dom").click(function () {
  461. let top = $(".click-href").offset().top;
  462. $(window).scrollTop(top)
  463. })
  464. })
  465. // 图片观看轮播
  466. $(function () {
  467. // 获取图片
  468. let showimglist = Array.from($('.showimglist img')), imglist = [], imglistdom = $("#imglist")
  469. i = 0, size = 1;
  470. $('.showimglist img').click(function () {
  471. $("body").css({ "overflow-y": "hidden" })
  472. i = showimglist.indexOf(this);
  473. imgshow(0)
  474. imglistdom.show()
  475. })
  476. showimglist.map(item => {
  477. imglist.push($(item).data("original"));
  478. })
  479. function loop (src) {
  480. $("#imglist>div>img").attr("src", src);
  481. let newimg = new Image();
  482. newimg.src = src;
  483. newimg.onload = function (e) {
  484. let w = this.width / 2,
  485. h = this.height / 2;
  486. $("#imglist>div>img").css({ "top": `calc(50vh - ${h}px)`, "left": `calc(50vw - ${w}px)` })
  487. }
  488. }
  489. let btns = $("#imglist>div>.glyphicon");
  490. function imgshow (num) {
  491. i += num;
  492. if (i < 0) i = imglist.length - 1;
  493. if (i >= imglist.length) i = 0;
  494. loop(imglist[i]);
  495. }
  496. $(btns[0]).click(function (e) {
  497. size = 1;
  498. scale(0);
  499. imgshow(-1);
  500. });
  501. $(btns[1]).click(function (e) {
  502. size = 1;
  503. scale(0);
  504. imgshow(1);
  505. })
  506. let btnss = $("#imglist>div>span>img");
  507. function scale (num) {
  508. size += num;
  509. if (size <= 0) size = 0.5;
  510. $("#imglist>div>img").css({ "transform": `scale(${size})` })
  511. }
  512. $(btnss[0]).click(function (e) {
  513. scale(0.5);
  514. });
  515. $(btnss[1]).click(function (e) {
  516. scale(-0.5);
  517. });
  518. $(btnss[2]).click(function (e) {
  519. $("body").css({ "overflow-y": "scroll" })
  520. imglistdom.hide()
  521. });
  522. })