├── README.md ├── ajax.ts ├── ajax.js ├── logger.ts ├── logger.js └── index.html /README.md: -------------------------------------------------------------------------------- 1 | # logger 2 | -------------------------------------------------------------------------------- /ajax.ts: -------------------------------------------------------------------------------- 1 | (function ($, w) { 2 | w._ajax = $.ajax; 3 | $.ajax = function (arg) { 4 | var t = new Date().getTime(); 5 | var success = arg.success 6 | // var successArg = arg.success 7 | arg.success = function () { 8 | var data = arguments 9 | var newT = new Date().getTime(); 10 | // console.log(newT - t); 11 | var newS = function () { 12 | console.log(1111111) 13 | success.call(this, data) 14 | } 15 | _ajax({ 16 | url: 'http://www.daiwei.org/vue/server/home.php?inAjax=1&do=getRewardList', 17 | success: newS 18 | }); 19 | } 20 | return _ajax.call($, arg) 21 | }; 22 | })(jQuery, window); 23 | -------------------------------------------------------------------------------- /ajax.js: -------------------------------------------------------------------------------- 1 | (function ($, w) { 2 | w._ajax = $.ajax; 3 | $.ajax = function (arg) { 4 | var t = new Date().getTime(); 5 | var success = arg.success 6 | // var successArg = arg.success 7 | arg.success = function () { 8 | var data = arguments 9 | var newT = new Date().getTime(); 10 | // console.log(newT - t); 11 | var newS = function () { 12 | console.log(1111111) 13 | success.call(this, data) 14 | } 15 | _ajax({ 16 | url: 'http://www.daiwei.org/vue/server/home.php?inAjax=1&do=getRewardList', 17 | success: newS 18 | }); 19 | } 20 | return _ajax.call($, arg) 21 | }; 22 | })(jQuery, window); 23 | // (function ($, w) { 24 | // var jQ = $; 25 | // $.ajax = function (...arg) { 26 | // var t = new Date().getTime(); 27 | // console.log('time', t); 28 | // return function () { 29 | // jQ.ajax.call(this, arg); 30 | // }; 31 | // }; 32 | // })(jQuery, window); 33 | -------------------------------------------------------------------------------- /logger.ts: -------------------------------------------------------------------------------- 1 | class Logger { 2 | timing: { 3 | [propName: string]: any 4 | } 5 | constructor () { 6 | this.timing = window.performance.timing 7 | this.initErrorEvent() 8 | } 9 | public getTiming (): any { 10 | var _return = { 11 | // DNS查询耗时 12 | dnsT: this.timing.domainLookupEnd - this.timing.domainLookupStart, 13 | // 白屏时间 14 | loadT: this.timing.domLoading - this.timing.navigationStart, 15 | // request请求耗时 16 | requestT: this.timing.responseEnd - this.timing.responseStart, 17 | // TCP链接耗时 18 | tcpT: this.timing.connectEnd - this.timing.connectStart, 19 | // 解析dom树耗时 20 | renderDomT: this.timing.domComplete - this.timing.domInteractive, 21 | // domready时间(用户可操作时间节点) 22 | readyDomT: this.timing.domContentLoadedEventEnd - this.timing.navigationStart, 23 | // onload时间(总下载时间) 24 | onLoadT: this.timing.loadEventEnd - this.timing.navigationStart 25 | } 26 | return _return 27 | } 28 | 29 | /** 30 | * 初始化error监听事件 31 | */ 32 | private initErrorEvent (): void { 33 | /** 34 | * @param {String} errorMessage 错误信息 35 | * @param {String} scriptURL 出错文件的URL 36 | * @param {Number} lineNumber 出错代码的行号 37 | * @param {Number} columnNumber 出错代码的列号 38 | * @param {Object} errorObj 错误信息Object 39 | */ 40 | var _this = this 41 | 42 | window.addEventListener('error', function (e) { 43 | setTimeout(function () { 44 | _this.staticError({ 45 | errorMessage: e.message, 46 | scriptURL: e.filename, 47 | lineNumber: e.lineno, 48 | columnNumber: e.colno, 49 | errorObj: e.error 50 | }); 51 | }, 0); 52 | }) 53 | } 54 | 55 | /** 56 | * 事件错误的回调事件 57 | */ 58 | public staticError (data: { 59 | [propName: string]: any 60 | }): void { 61 | $.ajax({ 62 | url: 'http://web-monitor.hfjy.com/api/web/monitor', 63 | type: 'POST', 64 | dataType: 'json', 65 | data: { 66 | url: window.location.href, 67 | current_time: new Date().getTime(), 68 | js_url: data.scriptURL, 69 | error_info: data.errorMessage, 70 | error_line: data.lineNumber, 71 | error_column: data.columnNumber 72 | } 73 | }) 74 | } 75 | 76 | /** 77 | * 页面加载时长的数据信息 78 | */ 79 | public fetchPageLoadInfo (): void { 80 | var timingInfo = this.getTiming() 81 | $.ajax({ 82 | url: 'http://web-monitor.hfjy.com/api/web/monitor', 83 | type: 'POST', 84 | dataType: 'json', 85 | data: { 86 | url: window.location.href, 87 | current_time: new Date().getTime(), 88 | response_time: timingInfo.loadT 89 | } 90 | }) 91 | } 92 | } 93 | 94 | window.logger = new Logger(); 95 | window.addEventListener('load', function () { 96 | setTimeout(function () { 97 | logger.fetchPageLoadInfo(); 98 | }, 1000); 99 | }, false); 100 | 101 | -------------------------------------------------------------------------------- /logger.js: -------------------------------------------------------------------------------- 1 | var Logger = /** @class */ (function () { 2 | function Logger() { 3 | this.timing = window.performance.timing; 4 | this.initErrorEvent(); 5 | } 6 | Logger.prototype.getTiming = function () { 7 | var _return = { 8 | // DNS查询耗时 9 | dnsT: this.timing.domainLookupEnd - this.timing.domainLookupStart, 10 | // 白屏时间 11 | loadT: this.timing.domLoading - this.timing.navigationStart, 12 | // request请求耗时 13 | requestT: this.timing.responseEnd - this.timing.responseStart, 14 | // TCP链接耗时 15 | tcpT: this.timing.connectEnd - this.timing.connectStart, 16 | // 解析dom树耗时 17 | renderDomT: this.timing.domComplete - this.timing.domInteractive, 18 | // domready时间(用户可操作时间节点) 19 | readyDomT: this.timing.domContentLoadedEventEnd - this.timing.navigationStart, 20 | // onload时间(总下载时间) 21 | onLoadT: this.timing.loadEventEnd - this.timing.navigationStart 22 | }; 23 | return _return; 24 | }; 25 | /** 26 | * 初始化error监听事件 27 | */ 28 | Logger.prototype.initErrorEvent = function () { 29 | /** 30 | * @param {String} errorMessage 错误信息 31 | * @param {String} scriptURL 出错文件的URL 32 | * @param {Number} lineNumber 出错代码的行号 33 | * @param {Number} columnNumber 出错代码的列号 34 | * @param {Object} errorObj 错误信息Object 35 | */ 36 | var _this = this; 37 | window.addEventListener('error', function (e) { 38 | setTimeout(function () { 39 | _this.staticError({ 40 | errorMessage: e.message, 41 | scriptURL: e.filename, 42 | lineNumber: e.lineno, 43 | columnNumber: e.colno, 44 | errorObj: e.error 45 | }); 46 | }, 0); 47 | }); 48 | }; 49 | /** 50 | * 事件错误的回调事件 51 | */ 52 | Logger.prototype.staticError = function (data) { 53 | $.ajax({ 54 | url: '', 55 | type: 'POST', 56 | dataType: 'json', 57 | data: { 58 | url: window.location.href, 59 | current_time: new Date().getTime(), 60 | js_url: data.scriptURL, 61 | error_info: data.errorMessage, 62 | error_line: data.lineNumber, 63 | error_column: data.columnNumber 64 | } 65 | }); 66 | }; 67 | /** 68 | * 页面加载时长的数据信息 69 | */ 70 | Logger.prototype.fetchPageLoadInfo = function () { 71 | var timingInfo = this.getTiming(); 72 | $.ajax({ 73 | url: '', 74 | type: 'POST', 75 | dataType: 'json', 76 | data: { 77 | url: window.location.href, 78 | current_time: new Date().getTime(), 79 | response_time: timingInfo.loadT 80 | } 81 | }); 82 | }; 83 | return Logger; 84 | }()); 85 | window.logger = new Logger(); 86 | window.addEventListener('load', function () { 87 | setTimeout(function () { 88 | logger.fetchPageLoadInfo(); 89 | }, 1000); 90 | }, false); 91 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | logger 8 | 9 | 10 | 11 | 12 |
13 | 14 |
15 |
16 |
17 |
18 |
19 | 30 |

文章标题

31 |

时间:2017-12-15标签:在线1对1

32 |
33 |

34 | 据福克斯新闻报道,当被问到释放孟晚舟是否可能成为与中国达成一笔大交易的一部分时,库德洛说,“我无法确保任何事,这件事会对贸易谈判造成怎样的影响,我不能只是坐在这就能完全确定。” 35 | 库德洛称,他无法确认的部分原因是因为执法部门的行动不属于他的职责范围。 36 | 库德洛还表示,目前孟晚舟被逮捕与数月以来和中国的贸易战似乎处于“不同的频道,但他承认这两个问题可能会混在一起。“我无法预测将来会怎样,但他们目前是在不同的频道,而且我觉得将来一段时间都被视为这样的情况。” 37 |

38 |
39 |
40 | 48 | 49 | 64 | 65 | 66 |
67 | 68 | 80 |
81 |
82 |
83 | 84 |
85 | 107 | 127 |
128 | 129 |
130 | 131 |
132 |
133 |
134 |
135 |

为什么我为孩子选择海风教育

136 |
137 |
138 |
139 |
140 |

5000 +

141 |

知识切片

142 |
143 |
144 |

3 +

145 |

第三代智能学习系统 146 | 为学员、老师双重赋能

147 |
148 |
149 |
150 |
151 |

5000 +

152 |

知识切片

153 |
154 |
155 |

3 +

156 |

第三代智能学习系统 157 | 为学员、老师双重赋能

158 |
159 |
160 |
161 |
162 |

5000 +

163 |

知识切片

164 |
165 |
166 |

3 +

167 |

第三代智能学习系统 168 | 为学员、老师双重赋能

169 |
170 |
171 |
172 |
173 |

5000 +

174 |

知识切片

175 |
176 |
177 |

3 +

178 |

第三代智能学习系统 179 | 为学员、老师双重赋能

180 |
181 |
182 | 183 |
184 | 185 | 188 |
189 |
190 | 191 | 192 | 193 |
194 |
195 |
196 |
197 |
198 | 1.简历筛选 199 |
200 |
201 |
202 |
203 |
204 | 重点大学教育背景、教学经验达到指定 205 | 级别、持有教师资格证 206 |
207 |
208 |
209 |
210 |
211 |
212 | 2.面试择优 213 |
214 |
215 |
216 |
217 |
218 | 学科学术能力测评、课程课件设计打分、授课专业技能评分、良好的网络授课环境 219 |
220 |
221 |
222 |
223 |
224 |
225 | 3.通用培训 226 |
227 |
228 |
229 |
230 |
231 | 教学方法论、教育心理学、小初高学生心理发展、学员与家长沟通技巧 232 |
233 |
234 |
235 |
236 |
237 |
238 | 4.单科培训 239 |
240 |
241 |
242 |
243 |
244 | 单科指定学情考情、各地区教材版本解读、重难知识点,常规&典型考题培训 245 |
246 |
247 |
248 |
249 |
250 |
251 | 5.试讲考核 252 |
253 |
254 |
255 |
256 |
257 | 3轮分模块试讲考核,多维度指导教师攻破教学盲点和难点 258 |
259 |
260 |
261 |
262 |
263 |
264 | 6.终极考核 265 |
266 |
267 |
268 |
269 |
270 | 通过严格的考核标准及评分体系,正式成为海风教育专职老师 271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
6层严选老师
279 |

280 | 名重点大学师资背景的老师

281 |

282 | 经过6层选拔才能成为海风教育专职老师 283 |

284 | 285 |
286 |
287 |
288 |
289 | 290 | 291 |
292 |
293 |
294 |
295 |

296 | 5阶成长课程体系 297 |

298 |

299 | 科学解决小学、初中、高中各阶段学习问题 300 |

301 |
302 |
303 | 304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |

313 | 基础水平:差 314 |

315 |

316 | 问题描述:学科基础知识概念模糊,解题困难 317 |

318 |

319 | 解决方案:全面复习基础知识,利用记忆曲线,采用三 步循环式学习方法,做到“日清,周结、月考”,帮助 孩子夯实基础。 320 |

321 |
322 | 325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |

339 | 基础水平:差 340 |

341 |

342 | 问题描述:学科基础知识概念模糊,解题困难 343 |

344 |

345 | 解决方案:全面复习基础知识,利用记忆曲线,采用三 步循环式学习方法,做到“日清,周结、月考”,帮助 孩子夯实基础。 346 |

347 |
348 | 351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |

365 | 基础水平:差 366 |

367 |

368 | 问题描述:学科基础知识概念模糊,解题困难 369 |

370 |

371 | 解决方案:全面复习基础知识,利用记忆曲线,采用三 步循环式学习方法,做到“日清,周结、月考”,帮助 孩子夯实基础。 372 |

373 |
374 | 377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |

391 | 基础水平:差 392 |

393 |

394 | 问题描述:学科基础知识概念模糊,解题困难 395 |

396 |

397 | 解决方案:全面复习基础知识,利用记忆曲线,采用三 步循环式学习方法,做到“日清,周结、月考”,帮助 孩子夯实基础。 398 |

399 |
400 | 403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |

417 | 基础水平:差 418 |

419 |

420 | 问题描述:学科基础知识概念模糊,解题困难 421 |

422 |

423 | 解决方案:全面复习基础知识,利用记忆曲线,采用三 步循环式学习方法,做到“日清,周结、月考”,帮助 孩子夯实基础。 424 |

425 |
426 | 429 |
430 |
431 |
432 |
433 |
434 |
435 | 436 |
437 |
438 |
439 |

免费预约一对一课程

440 |
441 | 444 | 447 | 448 | 449 | 450 |
451 | 452 | 我已阅读并同意海风用户注册协议隐私政策 453 |
454 |
455 |
456 |
457 | 458 | 459 | 460 |
461 |
462 |
463 |

第三代智能学习系统

464 |

为学员、老师双重赋能

465 |
466 |
    467 |
  • 468 |

    469 | 历时4 年 470 |

    471 |

    耗资过亿自主研发

    472 |
  • 473 |
  • 474 |

    475 | AI智能 476 |

    477 |

    在线教育首家应用

    478 |
  • 479 |
  • 480 |

    481 | 集成大数据 482 |

    483 |

    打造透明高效课堂

    484 |
  • 485 |
486 | 490 |
491 |
492 | 493 | 494 |
495 |
496 |
497 |

海风承诺

498 |

为每一位学员提供可靠的合同保障

499 |
500 |
501 |
502 | 503 |
504 |
505 |
506 |
507 | 508 |
509 |
510 |

新学员保障

511 |

新学员首月上课不满意,退全款。

512 |
513 |
514 |
515 |
516 | 517 |
518 |
519 |

退费保障

520 |

课程不满意,随时退余款。

521 |
522 |
523 |
524 |
525 | 526 |
527 |
528 |

师资承诺

529 |

教学不满意,随时换老师。

530 |
531 |
532 |
533 |
534 | 535 |
536 |
537 |

服务保障

538 |

每个学员配专属班主任、助教,全程跟进学习情况。

539 |
540 |
541 | 542 | 545 |
546 |
547 |
548 |
549 | 550 | 551 |
552 |
553 |
554 |

试听流程

555 |
556 |
557 |
558 |
559 | 560 |
561 |

预约试听课

562 |

注册后我们会尽快与您联系

563 |
564 |
565 |
566 |
567 | 568 |
569 |

为您安排预约

570 |

您的专属课程顾问会及时为您的孩子

571 |

安排学科诊断课,以及1对1试听课

572 |
573 |
574 |
575 |
576 | 577 |
578 |

进入智能学习系统上课

579 |

开始智能高效的1对1课程

580 |
581 |
582 | 583 | 586 | 587 |
588 |
589 | 590 | 591 |
592 |
593 |
594 |

我心中的海风

595 |

186589名学员遍布全国34个省市(包含港、澳、台)

596 |
597 |
598 |
599 |

老师专业

600 |

7185 赞同

601 |
602 |
603 |

大品牌

604 |

8964 赞同

605 |
606 |
607 |

性价比高

608 |

6512 赞同

609 |
610 |
611 |

学习系统好用

612 |

5672 赞同

613 |
614 |
615 |

效果好

616 |

15907 赞同

617 |
618 |
619 |

上课轻松方便

620 |

5427 赞同

621 |
622 |
623 |

服务好

624 |

3797 赞同

625 |
626 |
627 | 我的印象 628 |
629 |
630 |
631 |
632 | 633 | 634 |
635 |
636 |
637 |

荣誉源于实力

638 |
639 | 640 |
641 |
642 |
643 | 644 |
645 |
646 |
647 |
648 |
649 | 650 | 651 |
652 |
653 |
654 |

权威媒体报道

655 |
656 |
657 |
658 |
659 |
660 | 661 | 662 | 695 | 696 |
697 | 698 | 699 |
700 |
701 |
702 | 703 | 公众号 704 |
705 |
706 |
707 | 708 | 709 | 关注获得更多家长福利 710 |
711 |
712 |
713 |
714 |
715 | 716 | 在线咨询 717 |
718 |
719 |
720 | 721 |

点击咨询在线客服

722 |
723 |
724 |
725 |
726 |
727 | 728 | 电话咨询 729 |
730 |
731 |
732 | 733 |

咨询热线:4008-331-112

734 |
735 |
736 |
737 |
738 |
739 | 740 | 预约试听 741 |
742 |
743 |
744 | 745 |

免费预约299元试听课

746 |
747 | 748 | 749 | 750 |
751 |
752 |
753 |
754 |
755 | 756 | 757 |
758 |
759 | 760 |
761 | 762 |
763 |
764 |

免费领取600元试听课

765 | 请准确填写信息,稍后老师将联系您 766 |
767 | 770 | 773 | 774 | 775 | 776 |
777 |
778 |
779 |
780 |
781 | 782 | 783 | 784 | 785 | 801 | --------------------------------------------------------------------------------